我正在运行一个逐步的程序,某些标准会从表中删除记录。但是,记录可以在第7个表或第8个表之后消除,所以我一直在这样做,将表1与2合并,然后将表2与3合并,依此类推,这不是很方便。有没有办法可以追踪"用旗帜观察?比如说,如果A在表1中,则匹配= 1 else匹配= 0.并从那里,确定从哪个表A中消除(在本例中为表3)。我需要一次跟踪可能的多个观察结果(不是太多,可能是5或10),它们可能在不同的点被消除(表3中的一个,表8中的一个)。
示例:
表1:
Pat_ID
A
乙
C
d
电子
˚F
表2:
A
乙
d
电子
˚F
表3:
乙
d
电子
˚F
答案 0 :(得分:3)
我认为这就是你要找的东西。这会将表合并在一起并记录ID所在的表。
编辑:在回复评论中的问题时,我意识到命名可能令人困惑。我正在更改表名以使事情更清楚。
data mick;
input PAT_ID $ ;
datalines;
A
B
C
D
E
F
;
run;
data keith;
input PAT_ID $ ;
datalines;
A
B
D
E
F
;
run;
data ron;
input PAT_ID $ ;
datalines;
B
D
E
F
;
run;
/* merge */
data want(drop=i);
merge mick (in=t1)
keith (in=t2)
ron (in=t3);
by PAT_ID;
array table[3] Mick Keith Ron;
array t[3];
do i=1 to 3;
if t[i] then table[i]=1;
else table[i]=0;
end;
run;
这会产生
PAT_ID Mick Keith Ron
A 1 1 0
B 1 1 1
C 1 0 0
D 1 1 1
E 1 1 1
F 1 1 1
答案 1 :(得分:0)
当你删除这些记录时,它们去了哪里?几年前我共同写了一篇论文,认为每次删除记录时,都应该将它们写入已删除记录的数据集中。这样可以更轻松地跟踪删除的记录,步骤和原因。
例如:
data table2
drop_missingScore
;
set table1;
if missing(score) then output drop_missingScore;
else output table2;
run;
完整的论文可在此处找到:http://www.lexjansen.com/nesug/nesug11/ds/ds06.pdf