全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2158 8
2015-09-18
请教如果我有数据是这样的:
ID Status
1   0
1   1
2   0
2   0
3   1
3   1
4   0
4   1
4   1
5   0
6   1
7   1
7   1

我想知道如何快速output 哪些ID的status从0 变成了1, 哪些是0 一直没有变化,哪些是1一直没有变化,应该没有从1 变成0 这种形式.

因为数据有几万行,虽然我用笨办法,比如首先 Proc freq; table ID;找出那些有multiple IDs;然后和原来的数据Merge,再做一个Proc freq;table ID*status,基本可以得到我想要的结果,但是好像不能output SAS data.问问大家有没有其他更好的办法.谢谢!



二维码

扫码加我 拉你入群

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

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

全部回复
2015-9-19 00:01:24
calsunny 发表于 2015-9-18 23:40
请教如果我有数据是这样的:
ID Status
1   0
可不可以取同一id的最大值和最小值,应该出现分别是1和0,全是1或全是0三种情况
二维码

扫码加我 拉你入群

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

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

2015-9-19 00:14:41
简单!

proc transpose data=input out= output;
by id;
var status;
run;

data final;
set output;
if COL2-COL1 > 0 then condition = '+1';
if COL2-COL1 < 0 then condition = '-1';
if COL2-COL1 = 0 then condition = 'unchanged';

run;
二维码

扫码加我 拉你入群

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

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

2015-9-19 04:53:31
谢谢楼上,可能我没有写清楚,ID有1,2,3,4,.... 10甚至更多row不等,所以这个方法不一定行得通.
二维码

扫码加我 拉你入群

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

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

2015-9-19 16:45:15
calsunny 发表于 2015-9-19 04:53
谢谢楼上,可能我没有写清楚,ID有1,2,3,4,.... 10甚至更多row不等,所以这个方法不一定行得通.
我知道啊, id 是在第一个 column 里面显示的, row多一些没关系啊。

我的数据都是几千万行的高频数据,就是用这个code。
二维码

扫码加我 拉你入群

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

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

2015-9-19 17:58:35
使用pro means,看比率
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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