加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2014-03-20 18:23:54)
标签:

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填到括号里。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有