我是SAS的新手,如果你能解决这个问题,我将不胜感激。我有以下数据描述属于一个组和一个子组的两个人之间的关系:
Group ID | SubG ID | Ind1 ID | Rel 1 | Ind2 ID | Rel 2 |
2 28 3 F 2 B
2 28 2 F 1 B
2 28 2 B 51 0
2 29 1 R 42 0
2 29 1 F 68 0
3 30 1 F 2 L
4 31 1 B 2 F
4 31 1 F 44 0
我想获得一个数据库,其中包含属于相同组ID和相同SubG ID的所有个体(Ind1和Ind2),并且只有一个关系= F,可以是Ind1 ID或Ind2 ID。我期望的数据库看起来像:
Group ID | SubG ID | Ind |
2 28 3
3 30 1
4 31 2
有什么建议吗?
谢谢! 曼努埃尔
答案 0 :(得分:1)
我首先将初始数据集转换为“长”形式,以便每行只有一个人。然后很容易选择那些在子组中只有关系F的那些:
data have;
input GroupID SubGID Ind1ID Rel1 $ Ind2ID Rel2 $;
datalines;
2 28 3 F 2 B
2 28 2 F 1 B
2 28 2 B 51 0
2 29 1 R 42 0
2 29 1 F 68 0
3 30 1 F 2 L
4 31 1 B 2 F
4 31 1 F 44 0
;
run;
data long;
set have;
IndID=Ind1ID;
Rel=Rel1;
output;
IndID=Ind2ID;
Rel=Rel2;
output;
drop Ind1ID Ind2ID Rel1 Rel2;
run;
proc sort data=long nodupkey; by GroupID SubGID IndID Rel; run;
data want;
set long;
by GroupID SubGID IndID;
if FIRST.IndID and LAST.IndID and Rel='F';
drop Rel;
run;