如何在序列SAS中找到缺失的数字
How to find the missing numbers in sequence SAS
在 SAS 中,如何在我的 'Number' 列中找到每个 'ID' 的缺失数字?
例如,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
在使用 DATALINES 输入您在问题中提供的数据后,我 运行 以下代码。
第一个 T运行按 ID 处理数据:
proc sort data=mydata; by id; run;
proc transpose data =mydata out=transposed prefix=number_;
by ID;
var number;
id number;
run;
下一步只是重新排序变量名,保留语句在此步骤中不做任何其他事情。
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 | | |
无需为您编写代码,这里是一种方法的概述...
- 按 ID(升序)和编号(降序)对数据进行排序
- 取每个ID的第一条记录(给出最大数量)
- 从最大数开始迭代到 1,每次迭代输出
- 按 ID 和编号重新排序(升序)
在 SAS 中,如何在我的 'Number' 列中找到每个 'ID' 的缺失数字?
例如,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
在使用 DATALINES 输入您在问题中提供的数据后,我 运行 以下代码。
第一个 T运行按 ID 处理数据:
proc sort data=mydata; by id; run;
proc transpose data =mydata out=transposed prefix=number_;
by ID;
var number;
id number;
run;
下一步只是重新排序变量名,保留语句在此步骤中不做任何其他事情。
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 | | |
无需为您编写代码,这里是一种方法的概述...
- 按 ID(升序)和编号(降序)对数据进行排序
- 取每个ID的第一条记录(给出最大数量)
- 从最大数开始迭代到 1,每次迭代输出
- 按 ID 和编号重新排序(升序)