为SAS

时间:2015-06-08 15:30:02

标签: duplicates sas

我有一个带有ID变量的SAS数据集,它应该在人员层面上是唯一的,但实际上有重复。我想要做的是创建一个重复的ID,只有当一个人有重复的ID值时才会填写,如下所示:

ID      Dupe_ID
1 
2          1
2          1
3
4          2
4          2

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:3)

        datos[(vertice,arista,k)]=media
        mMin=0.00009
        mMax=0.013



        cmap = cm.ScalarMappable(matplotlib.colors.Normalize(vmin=mMin, vmax=mMax), cmap = plt.get_cmap('spectral'))


        ax.scatter(vertice, arista, k, c= cmap.to_rgba(media), marker='o',s=40)

答案 1 :(得分:1)

在SAS 9.3+中,proc sort上有一个可以使用的新选项。如果您想将数据拆分为“实际上唯一”和“非唯一”数据集(为了以后处理非独特数据并找出它们应该是什么),以下内容将会这样做:

proc sort data=have out=nonuniquedata nouniquekey uniqueout=uniquedata;
  by id;
run;

NOUNIQUEKEY基本上与NODUPKEY相反:它只保留非唯一的记录。因此,“主要”输出数据集将具有非唯一记录,“uniqueout”数据集将具有唯一的记录。

答案 2 :(得分:0)

它的处理方式略有不同,但为了防止它对您和/或其他人有用 - proc sort有一个方便的简单dupout=选项来分隔非唯一关键观察:

proc sort data=have out=want dupout=dups ;
  by id ;
run ;

每个id的第一次出现将转到want数据集。具有相同id的任何后续观察都将转到dups数据集

答案 3 :(得分:0)

proc sort data = dataset out = sortdata;
by id;
run;

data younameit;
length dup_id 1;
set sortdata;
by id;
if first.id and last.id then dup_id =;
else dup_id =1;
run;

我的方法是使用First.Last.的数据步骤 您需要在PROCEDURE proc sort处执行排序 "by" immediately after set statementFirst.之前的数据步骤Last.可用于数据步骤。

如果观察本身是副群的最新观察和最后观察(即Id),则它必须是唯一的项目。假设有两个观察值为id = 2,则先前的观察值为first.id,后者则为last.id