全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7516 24
2013-06-06
急求高手解决!十分感谢!
       我想根据数据的有效性来筛选数据,数据集中有很多变量,且命名规则没有统一的标准,因为sas中column的name显示_col0-_col30,A1-A24,B1-B36等。我想根据_col2 ,_col4 ,_col6,_col7 ,_col18-_col25 ,_col27 的取值在(1,2);_col5 ,_col29 ,_col30取值 在(1,2,3);_col3,_col8 ,_col26取值在(1,2,3,4),A1-A24取值在(1,2,3,4,5)等筛选出满足这些条件的数据。求高手解决,有没有什么简单的代码?十分感谢。
       顺便问一下,为什么data a;set a; if (_col18-_col25 in (1,2)) then output a;run;输出的结果不对那?输出的结果好像少了很多,求解释。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-6-6 22:27:00
如果变量都是整数而且取值域是连续的,可以用if max(_col2, _col4, _col6, _col7, of _col18-_col25, _col27) in (1,2) and min(_col2, _col4, _col6, _col7, of _col18-_col25, _col27) in (1,2)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-6 23:21:15
yuerqieqie 发表于 2013-6-6 22:27
如果变量都是整数而且取值域是连续的,可以用if max(_col2, _col4, _col6, _col7, of _col18-_col25, _col2 ...
十分感谢,我试了一下,达到了我的目的。
我还想问一下因为有很多列,这里我没有罗列完,有没有简单的方法把这些列表示出来那?只能这样一个个的写出来吗?还有sas里不允许if (_col18-_col25 in (1,2)) then output a;这样的操作?多个列在一起的操作得需要一个函数才可以同时处理吗?
谢谢指点!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-6 23:41:00
这是转置过的数据?
在转置之前,用数组可能也能操作。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-7 00:10:30
fyfzhdsfdx 发表于 2013-6-6 23:21
十分感谢,我试了一下,达到了我的目的。
我还想问一下因为有很多列,这里我没有罗列完,有没有简单的方 ...
if (_col18-_col25 in (1,2)) then output a 应该是没有这种语法的。用函数的时候也只能有of _col18-_col25这样的用法。或者说我不知道还有别的方法。等高手来解答。  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-7 00:11:15
boe 发表于 2013-6-6 23:41
这是转置过的数据?
在转置之前,用数组可能也能操作。。。
同意。转置前应该好处理一些
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群