【发布时间】:2016-06-22 14:48:28
【问题描述】:
我需要从数据集中删除重复项。我的问题是,一旦我对数据进行排序并标记重复项(使用滞后函数),跨变量的一些信息会出现在重复观察中,而一些则出现在原始观察中。我需要保留所有变量的信息,同时删除重复项。
我的想法是在删除重复之前先填写原始和重复之间的所有信息。
排序数据和标记重复(假数据值)后的观察示例:
Province AGE BRTHYEAR Trans_id Morb_id VarX flag_duplicate
AB 36 1980 45654 . . 0
AB 36 1980 . . 2135 1
ON 26 1990 . . 8868 0
ON 26 1990 . 35464 8868 1
我想要什么:
Province AGE BRTHYEAR Trans_id Morb_id VarX flag_duplicate
AB 36 1980 45654 . 2135 0
AB 36 1980 45654 . 2135 1
ON 26 1990 . 35464 8868 0
ON 26 1990 . 35464 8868 1
所以我可以删除重复项并最终得到这个:
Province AGE BRTHYEAR Trans_id Morb_id VarX flag_duplicate
AB 36 1980 45654 . 2135 0
ON 26 1990 . 35464 8868 0
我创建了滞后和领先变量来尝试填写信息,但它似乎只适用于某些数据集。
这是前导变量的代码:
data uncleaned_data;
merge uncleaned_data
uncleaned_data(
firstobs=2
keep= TRANS_ID MORB_ID Varx
rename=(TRANS_ID=lead_TRANS_ID MORB_ID=lead_MORB_ID Varx=lead_Varx ));
if lag(flag_duplicate=1) then do;
if TRANS_ID=. then do;
TRANS_ID= lead_TRANS_ID;
end;
if MORB_ID=. then do;
MORB_ID= lead_MORB_ID;
end;
if Varx=. then do;
Varx= lead_Varx;
end;
end;
run;
我对滞后变量做了同样的事情,除了我最初的 if 语句是 'if flag_duplicate=1 then do;'
此方法似乎不适用于我的数据集中的许多重复对。
有没有更好的方法来解决我的问题?可能通过proc SQL?
感谢您的阅读和提供的任何建议!
【问题讨论】:
标签: sas duplicates