全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
925 3
2013-12-30
有这样一组数据

ID    V1      T1        V2      T2       V3      T3
1      A        S1         B       S2       C        S2
2      A        S1         A       S2       C        S2
3      A        S1         B       S2       B        S2
4      A        S1         B       S2       B        S3
我需要找出V1,V2,V3的值相同,但对应的T1,T2,T3不同的ID
这样找出来的应该是ID=4, 因为他们V2=V3=B,但他们的T2=S2不等于T3=S3

这样该如何处理呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2013-12-30 13:08:38
按照你的要求,ID=2的时候应该也符合吧? V1=V2=A但是T1=S1,T2=S2. 如果我说的正确,试一下这段程序:

data wanted;
set test;
array v[3] v1-v3;
array t[3] t1-t3;
do i=1 to 2;
if v[i]=v[i+1] and t[i] ne t[i+1] then flag=1;
end;
if flag;
drop flag i;
run;
二维码

扫码加我 拉你入群

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

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

2013-12-30 13:26:41
这段确实是2也对。谢谢你给的code。确实对这段数据有用。
但如果遇到这类的话,就找不出来了;
ID    V1      T1        V2      T2       V3      T3
5      A        S1         B       S2       A        S2
其实V1和V3是一样的,但时间T不一样。
我正在为这个无序感到烦恼。
二维码

扫码加我 拉你入群

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

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

2013-12-30 14:09:23
目前我只有这个比较繁琐的办法了:

data wanted;
set test;
array v[3] v1-v3;
array t[3] t1-t3;
array res[3] $ res1-res3;
do i=1 to 3;
res[i]=strip(v[i])||'-'||strip(t[i]);
end;

call sortc(of res:);

array _v[3]$ _v1-_v3;
array _t[3]$ _t1-_t3;
array _res[3] res1-res3;
do j=1 to 3;
_v[j]=scan(_res[j],1,'-');
_t[j]=scan(_res[j],2,'-');
end;

do k=1 to 2;
if _v[k]=_v[k+1] and _t[k] ne _t[k+1] then flag=1;
end;

if flag;
keep id v1-v3 t1-t3;
run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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