2016-04-12 18 views
0

Bir SAS programım var. Bu dosyanın sonunda sadece bir gözlemi yazdırmaya çalışıyorum, Bu gözlem 5 değişkenlik aritmetik araçları içermelidir. Programı çalıştırdığım zaman var.SAS raporunu, değişkenlerin ortalamaları ile bir gözlem yapın

74   if last then 
75   DO; 
76   avgqtr1/numObs; 
       _______ 
       180 
77   avgqtr2/numObs; 
       _______ 
       180 
78   avgqtr3/numObs; 
       _______ 
       180 
79   avgqtr4/numObs; 
       _______ 
       180 
80   avgYear/numObs; 
       _______ 
       180 
ERROR 180-322: Statement is not valid or it is used out of proper order. 

Ben hatayı düzeltmek istiyorum: Ben programı çalıştırdığınızda Bu programım

Filename MyFile '/home/mrohde0/MyFolder/HWData/Funddrive.dat'; 
libname MyLib '/home/mrohde0/MyFolder/HWData/'; 
data MyLib.Fund_Avg(drop= Qtr1 Qtr2 Qtr3 Qtr4 AGEGP Year_Don Ydoncat); 
    set MyLib.NewFund end = last; 
    retain avgqtr1 0; 
    retain avgqtr2 0; 
    retain avgqtr3 0; 
    retain avgqtr4 0; 
    retain avgyear 0; 
    retain numObs 0; 

    avgqtr1 + qtr1; 
    avgqtr2 + qtr2; 
    avgqtr3 + qtr3; 
    avgqtr4 + qtr4; 
    avgyear + Year_don; 
    numObs + 1; 
    if last then 
     DO; 
      /* need to divide by number of observations to make these values the Arithmetic mean */ 
      avgqtr1/numObs; 
      avgqtr2/numObs; 
      avgqtr3/numObs; 
      avgqtr4/numObs; 
      avgYear/numObs; 
      output; 
     END; 
run; 

title1 'Average Funds'; 
Proc print data=Mylib.fund_avg; 
run; 

olduğunu

şeklinde bir hata olsun, bu hata günlüğü raporları olduğunu yukarıda ve SAS'ın yalnızca tek bir gözlemde hesapladığım ortalamaları yazdırmasını sağlayın.

+0

Neden proc anlamı kullanılmaz? Bu acı verici görünüyor. – Reeza

+0

Katılıyorum. Sadece talimatları takip ediyorum. Bir görev için. – ArmorCode

+0

Tamam ... Aşağıya cevap verin. Buna katılıyorum, bunu nasıl yapacağımı bilmek iyi, çünkü düzenli olarak gerçekleşiyor. – Reeza

cevap

0

Hesaplamayı bir değişkene atamanız gerekir.

Avgqtr1 = avgqtr1/numbObs; 

Lütfen bunu yapmayın. Proc aracı veya SQL proc kullanın.

Proc, bir sütun üretecek demektir, ancak SQL işlemi doğrudan satır üretebilir.

Proc SQL; 
Create table my_lib.fund_avg as 
Select mean(qtr1) as avgqtr1, 
     mean(qtr2) as avgqtr2, 
     ... 
    From my_lib.new_fund: 
Quit; 
+0

Division, + 'nın yolunu örtülü olarak desteklemez. Koruma ifadesine gerek yoktur, çünkü + örtük korumayı destekliyor. – Reeza

+0

Bu yorumu düzenledi: Şimdi anlıyorum. – ArmorCode