有的时候会感到某个SAS数据集变量太多,有些变量对于进一步分析和计算没有用处,反而会造成麻烦,特别在打印数据时很不方便(SAS在Output窗口打印数据时每行最多能打印256个字符,每个空格也算1个字符,当字符数超过256时,SAS就会把一行数据化为多行输出)。为此可以用drop或keep语句去除那些没有用处的变量(自然也同时删除它们的观测值),仅保留关心的变量。drop或keep语句都放在数据步程序前面,但是只在SAS数据集全部形成后,才最后去除变量。直观地说这两个语句能剪裁SAS数据体。
drop语句的一般形式是“drop变量名;”,其功能是去除关键词drop后面所跟随的变量。例如“drop x y;”语句的功能是从数据集中去除变量x和y。drop语句在需要删除的变量个数不多时常被使用。
keep语句的一般形式是“keep变量名;”,其功能是保留关键词keep后面所跟随的变量,其他变量一概删去。例如原有变量x、y、z1-z10、w,则“keep x y z2;”语句的功能是去除变量z1、z3-z10、w,仅保留变量x、y和z2。keep语句在保留的变量不太多,要删去很多变量时常被使用。
例4.4 在例4.1中,SAS数据集stock存有7个变量的10次观测值。如果只想看到每天股价的涨跌数,应当怎样编程?
解 可以用drop语句“drop x y z;”去掉变量x、y和z。也可以采用keep语句“keep date xdif ydif zdif;”保留变量date、xdif、ydif和zdif。这样一来就能得到存有4个变量的10次观测值的SAS数据集。即采用下列程序:
打印数据集stock后得到:(www.xing528.com)
可见删去了不想要的变量。
有时SAS数据集已经存在,想删除其中某些变量时,可用set语句拷贝原有SAS数据集,然后用drop或keep语句删除其中的某些变量。假如原有SAS数据集wu1,其中有变量x1-x5以及y1-y8。如果想删去其中的变量y2和y4,则可以用以下SAS程序:
提交程序后,SAS数据集wu2由将SAS数据集wu1删去变量y2和y4及其观测值而得。
练习题 从例2.2生成的数据集中去除变量heji。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。