楼主: fyfzhdsfdx
6686 24

SAS根据多个列筛选有效数据 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
966 点
帖子
97
精华
0
在线时间
89 小时
注册时间
2012-8-22
最后登录
2016-9-24

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
急求高手解决!十分感谢!
       我想根据数据的有效性来筛选数据,数据集中有很多变量,且命名规则没有统一的标准,因为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;输出的结果不对那?输出的结果好像少了很多,求解释。

二维码

扫码加我 拉你入群

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

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

关键词:column output outpu colum name 命名

沙发
yuerqieqie 发表于 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)

使用道具

藤椅
fyfzhdsfdx 发表于 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;这样的操作?多个列在一起的操作得需要一个函数才可以同时处理吗?
谢谢指点!

使用道具

板凳
boe 发表于 2013-6-6 23:41:00 |只看作者 |坛友微信交流群
这是转置过的数据?
在转置之前,用数组可能也能操作。。。
Gorgeous girl , I love !

使用道具

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

使用道具

地板
yuerqieqie 发表于 2013-6-7 00:11:15 |只看作者 |坛友微信交流群
boe 发表于 2013-6-6 23:41
这是转置过的数据?
在转置之前,用数组可能也能操作。。。
同意。转置前应该好处理一些

使用道具

7
chenys625 发表于 2013-6-7 00:25:23 |只看作者 |坛友微信交流群
if (_col18-_col25 in (1,2)) 这个本身自己的逻辑就没表示清楚吧,是每个col都在(1,2)中呢,还是有一个col在(1,2)就可以了?所以这语法肯定是通不了的。
用数组做循环,或者用max之类的函数巧妙处理下。

使用道具

8
fyfzhdsfdx 发表于 2013-6-7 19:59:53 |只看作者 |坛友微信交流群
boe 发表于 2013-6-6 23:41
这是转置过的数据?
在转置之前,用数组可能也能操作。。。
这些是原始数据,没有转置。
sas的数组我不太会用,能不能麻烦您写一下代码?不过这些列没有之间没有规律啊,比如_col2, _col4, _col6, _col7, of _col18-_col25, _col27怎么实现那?
十分感谢!

使用道具

9
fyfzhdsfdx 发表于 2013-6-7 20:02:21 |只看作者 |坛友微信交流群
chenys625 发表于 2013-6-7 00:25
if (_col18-_col25 in (1,2)) 这个本身自己的逻辑就没表示清楚吧,是每个col都在(1,2)中呢,还是有一个c ...
可能是没这个用法吧。我希望我列的这些列都能满足。
谢谢哈!

使用道具

10
boe 发表于 2013-6-7 22:52:58 |只看作者 |坛友微信交流群
楼主的意思是:在一个数据集中,把满足条件的变量找出来???不知道理解得对不对。
方法1先转置,数据量大的话,效率低一些;方法2效率应该会高些。
纯粹是搞笑,仅供参考。。。
Gorgeous girl , I love !

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 09:13