全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7137 8
2010-04-17
我有这样的数据data A:
num      t          x
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
现在想要得到这样的结果对于如果对num=1而言(num=2、3、4时也这样),一旦第一个x为0,则所有num=1时的观测值都删去 请教高手帮忙 我忙了半天就是出不来。。。多谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-17 19:59:18
data raw;
input num    t    x;
cards;
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
;run;
proc sort data=raw;by num;run;
data y;set raw;by num;if first.num and x=0 then output ;run;
proc sql;
select * from raw
where not exists
(select * from y where raw.num=y.num)
;quit;
二维码

扫码加我 拉你入群

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

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

2010-4-17 20:22:25
酥糖公子 发表于 2010-4-17 18:50
我有这样的数据data A:
num      t          x
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
现在想要得到这样的结果对于如果对num=1而言(num=2、3、4时也这样),一旦第一个x为0,则所有num=1时的观测值都删去 请教高手帮忙 我忙了半天就是出不来。。。多谢!
Here is a simple solution assuming the data is sorted by num.

data raw;
input num    t    x;
cards;
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
;
run;

data wanted;
   retain flag 0;
   set raw;
   by num;
   if first.num and x ne 0 then flag=1;
   if flag=1 then output;
   if last.num then flag=0;
   drop flag;
run;
二维码

扫码加我 拉你入群

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

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

2010-4-17 20:50:31
谢谢大家!没想到这么快就有高手回复了 太好了!真的很感谢 我都要绝望了!谢谢!
二维码

扫码加我 拉你入群

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

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

2010-4-17 21:05:57
跑出来啦,再次感谢,人大经济论坛真是个卧虎藏龙的地方,谢谢!
二维码

扫码加我 拉你入群

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

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

2010-4-17 21:13:19
额~ 还想厚脸皮的问一句 如果“第一个x为0,或缺失值 则所有num=1时的观测值都删去”怎么操作啊
谢谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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