1:为什么merge的时候,明明一个数据集是每人一条,然后另一个数据集是一人多条的时候,通过usubjid连接的时候,还是只有一个人只有一条记录。
也就是说我现在要将RFPENDTC merge 到其他数据集的时候,即使这个数据集是一人一条,但是最终输出的也只是一个人只有一个RFPENDTC的记录,而不是这个人的每条观测都有RFPENDTC.
就比如说
data dm;
set sdtm.dm;
RFXSTDTC=substr(RFXSTDTC, 1, 10);
keep USUBJID RFICDTC RFXSTDTC RFPENDTC ARMCD DTHDTC;
proc sort;by USUBJID;
run;
data temp1;
setdm;
SESTDTC=strip(RFICDTC);
if SESTDTC ne '';
ETCD='SCR';
proc sort;by usubjid;
run;
data temp2;
setdm;
proc sort;by usubjid;
run;
data svall;
merge svall1temp1;
by usubjid;
.........
run;
此时svall这个数据集里面已经有USUBJID RFICDTC RFXSTDTC RFPENDTC ARMCD DTHDTC这几个变量了;
data cmall;
mergesvalldm(keep=USUBJID RFPENDTC);
by usubjid;
run;
问题就出现在这里了,svall这个数据集里面已经有USUBJIDRFPENDTC,然后你DM数据集也有RFPENDTC,merge的时候就会出现上面讲到的问题,而不是这个人所有的观测都有RFPENDTC的值,为什么我也不知道。
所以我们可以通过下面这种方式解决这个问题,先删除主数据集的目标变量
data cmall;
merge svall(drop=RFPENDTC) dm(keep=USUBJID RFPENDTC);
by usubjid;
run;
2:--SEQ顺序为什么跟其他人的不一样,比如说筛选期是1,治疗期1是2,治疗期2是3,治疗期3是4,但是我求出来的SEQ却是筛选期是1,治疗期1也是从1开始。
我看排序变量都一样啊,比如说都是STUDYID USUBJID SESTDTC TAETORD啊,为什么出来的SESEQ不一样呢?
3:NOTE: NOSPOOL is on. Rerunning with OPTION SPOOL might allow recovery of the LINE and COLUMN where the error has occurred.
我在SAS Community搜索这个问题,有一个人回答“I guess the problem lies in the macro variable &scen”,于是我回头看我的宏变量,发现没有写错啊,但是却发现了造成这个问题的原因。又是因为粗心导致多写了一个括号导致报这个log,真是无语,已经因为这个括号出现好几次错了。