SAS放弃克隆观察

时间:2014-11-21 14:13:29

标签: sas

我有一个带有ID和其他两个变量的数据集。 id不是唯一的,它在数据集中出现超过1次(患者可以接受多次临床治疗)。如果它是先前观察的完美克隆,我怎样才能丢弃整个观察(整条线) (基于另外两个变量值)?我不想使用疯狂的if语句。 感谢。

3 个答案:

答案 0 :(得分:3)

proc sql;
select distinct * from olddata;
quit;

听起来像一个简单的SQL修复程序。如果选择所有列,则select distinct选项将删除数据集中任何完全重复的行。

答案 1 :(得分:0)

如果您特别想要确定两个连续的行是否相同(但不希望匹配由其他行分隔的相同行),则可以在by语句上使用notsorted,然后first last变量。

data want;
  set have;
  by id var1 var2 notsorted;
  if first.var2;
run;

这将保留任何相同id / var1 / var2组的第一条记录,只要它们在数据集上是连续的。当然,如果您首先对数据集by id var1 var2进行排序,这将始终删除重复项,但不进行排序,这仍然适用于删除并置的连续对(或更多)。

答案 2 :(得分:0)

我更喜欢@JJFord的回答,但为了完整起见,也可以使用nodupe中的proc sort选项来完成:

proc sort data=mydata nodupe;
  by id;
run;

您选择的by变量并不重要。重要的是指定nodupe选项。