如何对观测值进行重复数据删除,但要使行中的信息最多?

时间:2019-02-22 18:35:32

标签: sas duplicates

我有一个170列和2000行的数据集。许多观察结果是精确重复或相似的结果。我的数据采用以下格式:

   A          B        C      D  
 Entry 1   Florida     .     54
 Entry 1      .        .     54
 Entry 1   Florida     .     54
 Entry 1   Florida    New     .
 Entry 1   Florida    New    54

您会注意到,列A总是填充的。我想对这些数据进行重复数据删除,以便只返回

    A         B        C       D
  Entry 1   Florida    New       54

关于如何在SAS中执行此操作的任何建议?

谢谢!

2 个答案:

答案 0 :(得分:2)

这将为A的每个级别提供最后一个不丢失的值。

data have;
   input (A  B  C)(&$) D;
   cards; 
 Entry 1   Florida     .     54
 Entry 1      .        .     54
 Entry 1   Florida     .     54
 Entry 1   Florida    New     .
 Entry 1   Florida    New    54
 ;;;;
   run;
proc print;
   run;
data want;
   update have(obs=0) have;
   by a;
   run;
proc print;
   run;

enter image description here

答案 1 :(得分:0)

在这种情况下,假设所有信息的权重均等,并且主键为A。我们将计算A的缺失值数量,并且仅使缺失值最少的行。缺失值最少的行为您提供有关主键A的每个值的最多信息。

proc sort data=have;
    by A;
run;

data count_info;
    set have;
    by A;

    info_count = cmiss(of _ALL_);
run;

proc sort data=count_info;
    by A info_count;
run;

data want;
    set count_info;
    by A info_count;

    if(first.A);
run;