如何在序列SAS中找到缺失的数字

时间:2015-01-21 18:57:02

标签: sas

在SAS中,如何在每个'ID'的'Number'列中找到丢失的数字?

例如,ID 1003的最大值为6,显然缺少数字5.我有大约4000行要查看,因此手动执行此操作不会发生。

非常感谢任何帮助!我很难过。

ID Number 1002 2 1002 1 1003 6 1003 4 1003 3 1003 2 1003 1 1005 4 1005 3 1005 2 1005 1 1007 1 1009 3 1009 2 1009 1

2 个答案:

答案 0 :(得分:0)

无需为您编写代码,这里是一个方法的概述...

  1. 按ID(升序)和数字(降序)
  2. 对数据进行排序
  3. 获取每个ID的第一条记录(给出最大数量)
  4. 从最大数字迭代到1,输出每次迭代
  5. 按ID和号码重新排序(升序)

答案 1 :(得分:-1)

在使用DATALINES输入您在问题中提供的数据后,我运行了以下代码。

首先按ID转置数据:

proc sort data=mydata; by id; run;
proc transpose data =mydata  out=transposed  prefix=number_;
by ID;
var number;
id number;
run;

下一步只是对变量名重新排序,retain语句在此步骤中不执行任何其他操作。

data transposed_and_ordered;
retain id _name_ number_1 number_2 number_3 number_4 number_5 number_6;
set transposed;
run;

上面的两个步骤(以及DATALINES输入步骤)产生了以下数据集transposed_and_ordered:

-------------------------------------------------------------------------------
|ID   | NAME    | number_1 | number_2  | number_3  | number_4  | number_6 |
-------------------------------------------------------------------------------
|1002 | number  | 1        | 2         |           |           |          |
-------------------------------------------------------------------------------
|1003 | number  | 1        | 2         |3          |4          |6         |
-------------------------------------------------------------------------------
|1005 | number  | 1        | 2         |3          |4          |          |
-------------------------------------------------------------------------------
|1007 | number  | 1        |           |           |           |          |
-------------------------------------------------------------------------------
|1009 | number  | 1        | 2         |3          |           |          |