如何用SAS对部分观测值进行处理

标签:
sas统计结果procprint部分观测值 |
分类: SAS_STATA_GAMS_MATLAB_Hadoop |
两三年前常用SAS和STATA,现在沉迷于EXCEL,迫于课程需要,重拾SAS,code几乎全忘。一边看资料和自己博客里的一些记录,一边重拾当年的回忆。原来博客里的那些SAS
code几乎都没有解释,以前只是把平时的一些code扔了进去,趁这次重新开始摸索,努力写点较为详细的资料。
SAS在处理数据方面的功能还是相当强大的,把这两天用到的一些方法稍微整理了一下。
拿到数据,一般都要先观察下数据,常用的相关SAS命令有:proc freq,proc means, proc
print。
昨天用了这么一小段:
proc print data=econ.cotton;
sum NetAcre;
where CropYear=1997 &
category='CAT';
RUN;
这段语句中,用的数据是econ.cotton这个数据,其中有个变量名字是“NetAcre”,另外这个dataset中有一个变量是“category",数据被分到很多不同类中,我只对其中“CAT”这一类感兴趣。所有要求sas计算所有1997年属于CAT这个类型中的所有observation的“NetAcre"的总和.
proc print可以用来让SAS直观的输出数据,
sum是命令SAS求和;
where是告诉SAS我对那部分变量感兴趣。如果不写where这行语句的话,sas会对所有observation的“NetAcre”进行加总,而加了where这个命令后,只对1997年属于“CAT"这个类型中的观测量进行加总。
类似的还有:
PROC FREQ data= econ.cotton;
TABLE InsPlanAbb*CoverLevel;
where CropYear>2000 <2004;
run;
这里只对2000年到20004年的数据感兴趣,因此加了“where
CropYear>2000 <2004;”这一小节。
proc freq里常用到“Table”,这个的结果是这样子:
“InsPlanAbb”这个变量中有APH, CRC, GRIP,
GRIPH这些观测值,“CoverLevel”这个变量中有50-90不同的观测值,通过table可以很直观的看到数据的情况。
另外一个观察变量总和的方法是proc means,要在语句中加入sum这个关键字,不然是得不到加总的。
proc means data= econ.cotton sum mean;
class Covercate CropYear Covercate;
where CropYear>1993 <2005;
output out=try sum(NetAcre)=sum_netacre;
run;
这段中同样用到了where。
output是用来保存数据,不写"output"的话,sas只是让你看一下结果,sum,mean这些统计数据不会被保存到数据库中,想proc
print一样,不写保存的语句的话,结果一闪而过,让你看看而已,不会被保存。要保存的话写上“output out=try sum(NetAcre)=sum_netacre;”这一小段。简单来说,红色部分是不能被修改的,out=是固定的,“try”是我自己给新保存的这个数据库起的名字。sum()是告诉sas你要保存那个变量的加总的结果。因为我要保存的这个变量是NetAcre,所以把NetAcre填到括号里。