sorting - 生成一个变量,它是另一个变量的两个值的比率
问题描述
我有一个个人级别的横截面数据集。观察结果是属于一个家庭的个人,而该家庭又是一个家庭的一部分。一个家庭可以有一个或多个家庭。
我的目标是通过将男人的家务时间除以伴侣的家务时间来获得每周家务时间的性别比例。
当个人是家庭的主要成员(女性)时变量v31
为 1,当个人是丈夫时变量为 2。
变量v4
是家庭 ID。
变量v32
是家庭内家庭的累进数量,如果家庭的第一个家庭是 1,如果是第二个家庭,则为 2,依此类推。
代码示例:
clear
input obs v4 v32 v31 v850
1 1 1 1 27
2 1 1 2 12
3 2 1 2 8
4 2 1 1 41
5 3 1 2 0
6 4 1 1 29
7 4 1 2 11
8 4 2 1 37
9 4 2 2 1
end
list
通过查看上面的数据示例,我的目标是创建一个名为的新变量domwork_ratio
,例如对于第 1 行和第 2 行,男性伴侣和女性伴侣的家务时间比率为 12/27。因为它们属于同一个家庭v32
和同一个家庭,所以这两个观测值将具有相同的值v4
。
我不知道如何告诉 Stata 做这个比例,以便每个丈夫的家务时间除以他的伴侣的时间。
我试过使用命令:
bysort v4 v32 v16: gen domwork_ratio = cond(v4 != v4[_n-1],999999,v850_tot[_n-1]/v850_tot)
但由于某种原因,创建的变量只有 999999 作为唯一值。
解决方案
感谢您提供数据示例。
clear
input obs v4 v32 v31 v850
1 1 1 1 27
2 1 1 2 12
3 2 1 2 8
4 2 1 1 41
5 3 1 2 0
6 4 1 1 29
7 4 1 2 11
8 4 2 1 37
9 4 2 2 1
end
bysort v32 v4 (v31) : gen ratio = v850[2] / v850[1] if v31[1] == 1 & v31[2] == 2
list, sepby(v32 v4)
+----------------------------------------+
| obs v4 v32 v31 v850 ratio |
|----------------------------------------|
1. | 1 1 1 1 27 .4444444 |
2. | 2 1 1 2 12 .4444444 |
|----------------------------------------|
3. | 4 2 1 1 41 .1951219 |
4. | 3 2 1 2 8 .1951219 |
|----------------------------------------|
5. | 5 3 1 2 0 . |
|----------------------------------------|
6. | 6 4 1 1 29 .3793103 |
7. | 7 4 1 2 11 .3793103 |
|----------------------------------------|
8. | 8 4 2 1 37 .027027 |
9. | 9 4 2 2 1 .027027 |
+----------------------------------------+
失败的代码是指v16
您在问题中没有解释的变量。但它的失败是可以解释的。该框架包括by v4 v16:
和在这样定义的组内,v4
并且v16
是不变的。然后这些组由单个观察组成。对于每组中的第一个也是唯一的观察,v4
不等于是真的,v4[_n-1]
因为v4[0]
返回为缺失。因此,正如报告的那样,总是返回 999999。(就 Stata 编程风格而言,返回系统缺失会是一个更好的主意。)
推荐阅读
- android - 为复选框分配特定值
- vba - TopLeftCell 错误,使用宏根据按下的按钮设置变量
- swift - How to iterate over an array of types in Swift 4.1?
- javascript - 如何解决错误 TypeError: self._form.on is not a function?
- reactjs - How to write a simple functional component that return a array list using map method
- python - 如何在python3中使用re仅打印所需的单词
- javascript - PassportJS 身份验证每次都失败(LocalStrategy)
- postgresql - 在 postgresql 中测量复制滞后
- r - 带有插入符号的 R 特征选择 - 将结果图限制在前 10 位,并将完整结果存储到数据框中
- sapui5 - SAP UI5 值帮助仅适用于 Smartfield