注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

零售创新,创新那些事儿,SPSS,VBA

零售创新

 
 
 

日志

 
 
关于我

新浪微博,零售创新 研究经理,数据分析师 希望和市场研究和零售业的同事共同进步! 本博客发表的都是免费或试用的资料,如果有版权问题请发邮件wangli12a@163.com联系删除。 spss excel vba blog

网易考拉推荐

转:2.3 SAS语言的数据管理功能(下)  

2012-06-29 10:43:30|  分类: SAS学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2.3 SAS语言的数据管理功能(下)

6. 用SET和OUTPUT语句拆分数据集

有时我们需要根据某一分类原则把数据行分别存放到不同的数据集。比如,我们希望把数据集a中的所有男生的观测放到数据集am中,把所有女生的观测放到af中,可以使用如下程序:

data am af;

set a;

select(sex);

when ('') output am;

when('') output af;

otherwise put sex='有错';

end;

drop sex; /*去掉sex这一列*/

run;

proc print data=am;run;

proc print data=af;run;

OUTPUT语句是一个可执行语句,它使得当前观测被写到语句指定的数据集中。这样,我们根据SELECT的结果把不同性别分别放到了两个不同数据集中。

OUTPUT语句还可以用来强行写入数据集而不必象我们在数据步流程图中说明的那样等到数据步最后一个语句完成。数据步中有了OUTPUT语句后数据步流程中不再有自动写入观测的操作,而只能由OUTPUT语句指定输出。不指定数据集名的OUTPUT语句输出到第一个结果数据集。比如下面的程序生成一个包含1到10的及其平方的有10个观测的数据集:

data sq;

do i=1 to 10;

j=i*i;

output;

end;

run;

proc print;run;

如果删去上面的OUTPUT语句则结果数据集中只有i=11,j=100的一个观测。

7. 数据集的纵向合并

几个结构相同的数据集可以上下地连接到一起。

data classes;

set class1 class2 class3;

run;

有时我们需要在合并数据集时加入一个变量来指示每一个观测原来来自哪一个小数据集,这可以在SET语句的每一个数据集名后面加一个括号里面写上IN=变量名,变量名所给的变量取1表示观测来自此数据集,取0表示观测非来自此数据集。例如,我们把a数据集按男、女拆分成了am和af两个数据集并抛弃了性别变量,就可以用如下程序连接两个数据集并恢复性别信息:

data new;

set am(in=male) af(in=female);

if male=1 then sex='';

if female=1 then sex='';

run;

8. 数据集的横向合并

data new;

merge ssa ssb ssc;

run;

若数据集的观测顺序不一样,一般应该采用按关键字合并的办法,排序过程如下:

proc sort data=ssa;

by name;

run;

proc sort data=ssb;

by name;

run;

proc sort data=ssc;

by name;

run;

9. 用updata语句更新数据集

如果我们发现数据集中的某些数据值有错误或者现在的值已经改变了,我们可以从更正了的原始数据重新生成数据集,或者使用更有效的方法,即建立一个只包含新数据值的数据集,用此数据集修改原数据集。使用如下的DATA步中可以实现数据集的更新:

DATA 新数据集名;

UPDATE 原数据集 更新用数据集;

BY关键变量;

RUN;

例如,数据集C9501中王思明的语文成绩实际应该是91分,张红艺性别应为男,可以先生成如下的只包含更正数据值的数据集,不需要改的观测不列入,不需要改的变量不列入或取缺失值:

data upd;

input name $ sex $ math;

cards;

张红艺 .

王思明 . 91

run;

然后,把原数据集C9501和更新用数据集UPD均按姓名排序:

proc sort data=c9501;

by name;run;

proc sort data=upd;

by name;run;

最后用UPDATE和BY更新得到新数据集NEW,

data new;

update c9501 upd;

by name;

run;

11. 用PROC SQL管理数据

用PROC SQL作查询的最简单的用法如下

PROC SQL;

SELECT 第一项,第二项,…,第n项

FROM数据集

WHERE 观测选择条件;

RUN;

其使用方法与SQL语言基本一致

 

 

原文:

http://blog.163.com/zzz216@yeah/blog/static/1625546842012031622927/

  评论这张
 
阅读(512)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017