楼主: adlywxf
65150 13

[数据管理求助] 请教STATA命令:如何将变量按25%分位数或中位数分组赋值 [推广有奖]

11
hs4601 发表于 2015-1-8 13:23:53
haddy1009 发表于 2011-10-26 09:40
“summ var1, d
local a = r(p25)
local b=r(p75)
b左边的符号是键盘第二行最左边第一个键,右边的符号是回车键旁的单引号

12
迢迢茫茫 发表于 2021-3-17 19:25:22
xtile income5q=income, nquantile(5)
产生新变量income5q,值为1,2,3,4,5, 分别代表
min->1st quintile, 1st->2nd quintile, etc.
然后drop掉不需要的分组也可以

13
水流花开22 发表于 2021-4-8 21:02:36
egen var2 = xtile(var1), by(year) nq(4)

14
赵安豆 发表于 2024-11-1 14:58:33
你的问题可以通过使用`pctile`或`xtile`命令来简化。特别是对于每年都要计算不同的百分位数值,你可以考虑将年份作为分组进行处理。下面我给出一个示例步骤和相应的Stata命令,这些步骤可以帮助你实现所需的功能。

### 步骤1:为每年的VAR1变量生成25%分位数

使用`pctile`或`xtile`命令来创建新的变量(比如说,Q1_VAR1),这个新变量将包含各年份内VAR1值对应的四分之一位置。但是我们更倾向于直接通过条件赋值的方式区分最小和最大的25%,因此我们可以直接利用`pctile`生成的百分位点进行分类。

### 步骤2:根据年度和25%分位数为VAR1变量分组

使用if条件语句,基于所计算出的分位数值对VAR1进行分类。下面是一个基本示例:

```stata
* 假设你有一个包含年份(year)和VAR1数据的面板数据集。
preserve

* 生成一个新的变量Q1_VAR1来存储25%分位数,我们使用pctile命令
by year, sort: pctile Q1_VAR1 = VAR1, p(25)

* 同样地,为75%分位数创建一个新变量,这一步其实不需要单独执行,
* 因为我们只需要区分最小和最大25%,但可以作为参考。
* by year, sort: pctile Q3_VAR1 = VAR1, p(75)

* 然后根据VAR1的值对每个年份内的观察进行分类
by year:
gen X1 = 0 if VAR1 <= Q1_VAR1 // 分类为最小25%
replace X1 = 1 if VAR1 >= r(r2) // 分类为最大25%,r(r2)是pctile命令返回的75%分位数

restore
```

### 注意事项:
- `preserve`和`restore`命令被用来保持数据集的状态,确保在处理过程中不丢失原始数据。
- `by year:`用于按照年份进行循环操作,分别计算每一年的百分位数值并进行分类。

这样你就可以避免每年手动查找分位数值,并自动对所有年度的数据进行分类了。希望这能帮助到你!

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 04:05