You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于数值排序结果重构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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:37:03