全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2121 10
2014-06-13
新人发帖,求助啊! 如果有这样一个类型的数据data a;input id fam tel vhid;
datalines;
1 1 0 1
1 0 1 2
2 1 0 3
1 0 0 4
2 0 1 5
2 0 1 6
3 1 1 7
3 1 1 8
3 1 1 9
4 0 0 10
4 0 0 11
4 0 1 12
5 0 1 13
5 0 1 14
5 0 1 15
6 1 0 16
6 1 0 17
6 1 0 18
7 0 0 19
7 1 0 20
7 0 0 21
;
我想按每个id筛选,每个id有三个数据,按顺序筛选,如果fam=1,则创建新变量L=1,每个id中L=1的最多只有一个,如果这id中fam=0,则筛选tel,如果Tel=1 则L=1,且同样每组最多一个,如果该组数据tel=0 fam=0,则L都为0. 要怎么实现啊。。。


二维码

扫码加我 拉你入群

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

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

全部回复
2014-6-13 10:25:40
你说的每组最多一个是什么意思啊?
二维码

扫码加我 拉你入群

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

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

2014-6-13 10:33:17
Bluewater1111 发表于 2014-6-13 10:25
你说的每组最多一个是什么意思啊?
就是每组一旦有一个L=1,这个筛选就完成了
二维码

扫码加我 拉你入群

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

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

2014-6-13 11:04:17
阿呆sas 发表于 2014-6-13 10:33
就是每组一旦有一个L=1,这个筛选就完成了
我这个电脑没SAS程序,不能验证,你尝试一下:

proc sort data=a;
by id;
run;

data b;
set a;
by id;
L=0;
if first.id then
   do until (L=1);
        if fam=1 or tel=1 then L=1;
   end;
run;


本文来自: 人大经济论坛 SAS专版 版,详细出处参考: https://bbs.pinggu.org/forum.php? ... amp;from^^uid=2382660
二维码

扫码加我 拉你入群

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

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

2014-6-13 11:09:18
Bluewater1111 发表于 2014-6-13 11:04
我这个电脑没SAS程序,不能验证,你尝试一下:

proc sort data=a;
好像有点儿思路了,可是我想优先筛选fam 如果fam都得0的情况下 再筛选tel,这样怎么实现呢?
二维码

扫码加我 拉你入群

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

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

2014-6-13 11:17:35
阿呆sas 发表于 2014-6-13 11:09
好像有点儿思路了,可是我想优先筛选fam 如果fam都得0的情况下 再筛选tel,这样怎么实现呢?
对fam降序排列后
if fam=1 or (fam=0 and tel=1) then L=1;
else L=0;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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