如何基于数值排序结果重构Stata变量?
问题描述
现有如下Stata数据集:
clear all input age1 age2 age3 age4 15 10 4 2 2 5 6 8 8 0 6 . 2 2 4 9 9 9 1 . 2 5 . . end
数据集包含4个变量,存在缺失值与重复值(结)。需要将每行的变量值按降序排序,生成新变量:
age1a:存储每行最大值age2a:存储每行第二大值age3a:存储每行第三大值age4a:存储每行第四大值
预期生成的新变量如下:
clear all input age1a age2a age3a age4a 15 10 4 2 8 6 5 2 8 6 0 . 9 4 2 2 9 9 1 . 5 2 . . end
完成排序后,需要通过gen space1_2 = age1a - age2a计算最大值与第二大值的差值,预期结果为:
space1_2 5 2 2 5 0 3
解决方案
使用Stata的rowsort命令即可实现行内降序排序,具体代码如下:
* 加载原始数据(若已加载可跳过) clear all input age1 age2 age3 age4 15 10 4 2 2 5 6 8 8 0 6 . 2 2 4 9 9 9 1 . 2 5 . . end * 对每行变量降序排序,生成目标新变量,缺失值排在末尾 rowsort age1a age2a age3a age4a = age1 age2 age3 age4, descending missing(last) * 计算最大值与第二大值的差值 gen space1_2 = age1a - age2a
运行上述代码后,生成的age1a-age4a与space1_2会完全符合预期结果。
内容的提问来源于stack exchange,提问作者bill999
相关产品推荐
相关产品推荐

