楼主: vitaminlee
924 3

怎么用数组寻找参数对应的另一组参数是否相同 [推广有奖]

  • 0关注
  • 0粉丝

高中生

27%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
262 点
帖子
22
精华
0
在线时间
19 小时
注册时间
2007-6-10
最后登录
2017-6-6

楼主
vitaminlee 发表于 2013-12-30 11:56:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有这样一组数据

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

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

扫码加我 拉你入群

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

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

关键词:如何

沙发
wwang111 发表于 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;
已有 1 人评分学术水平 收起 理由
vitaminlee + 1 观点有启发

总评分: 学术水平 + 1   查看全部评分

只有一个罗纳尔多

藤椅
vitaminlee 发表于 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不一样。
我正在为这个无序感到烦恼。

板凳
wwang111 发表于 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;
已有 1 人评分热心指数 收起 理由
vitaminlee + 1 观点有启发

总评分: 热心指数 + 1   查看全部评分

只有一个罗纳尔多

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 04:33