楼主: Philoushy
1032 7

[编程问题求助] stata交叉生成变量怎么实现 [推广有奖]

  • 0关注
  • 0粉丝

博士生

47%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
1.9502
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
1096 点
帖子
70
精华
0
在线时间
433 小时
注册时间
2011-3-26
最后登录
2024-4-9

10论坛币
捕获11.JPG
如图,rlshp是关系,1是受访者本人,2是受访者配偶,现在想在age旁边生成一个配偶年龄的新变量,即41旁边生成43,43旁边生成41,请问如何实现?ps.rlshp的6是子女,不用考虑。

最佳答案

杨富钧 查看完整内容

相当于 step 1:分别生成两个新的数据文件,(1)只包括户编号和户主配偶的年龄、(2)只包括户编号和户主的信息;两个数据文件中的年龄变量名可以分别命名为age2和age1 step 2: 根据户编号分别把age2和age1匹配到原始数据集里,并用order命令把age2和age1排到age的后面以便观察和操作; step 3: 对于非户主(rlshp!=1)的样本,把age2替换为缺失;对于非户主配偶(rlshp!=2)的样本,把age1替换为缺失; step 4: replace ...
关键词:Stata 生成变量 tata 如何实现 受访者
沙发
杨富钧 发表于 2022-5-7 00:11:39 |只看作者 |坛友微信交流群
杨富钧 发表于 2022-5-7 10:08
我的思路是,先生成一个只包含户编码和配偶年龄的数据文件,然后以户编码为条件进行匹配:

keep hhid a ...
相当于
step 1:分别生成两个新的数据文件,(1)只包括户编号和户主配偶的年龄、(2)只包括户编号和户主的信息;两个数据文件中的年龄变量名可以分别命名为age2和age1

step 2: 根据户编号分别把age2和age1匹配到原始数据集里,并用order命令把age2和age1排到age的后面以便观察和操作;

step 3: 对于非户主(rlshp!=1)的样本,把age2替换为缺失;对于非户主配偶(rlshp!=2)的样本,把age1替换为缺失;

step 4: replace age2 = age1 if age2==. 用这个命令把户主的年龄匹配到户主配偶的样本上,这样得到的age2应该就是我们需要的新变量,户主样本对应的age2的值是配偶的年龄,而户主配偶样本对应的age2的值是户主的年龄,age1到这里就可以删掉了

使用道具

藤椅
songking 发表于 2022-5-7 09:37:05 |只看作者 |坛友微信交流群
给出更多示例数据,方便计算

使用道具

板凳
杨富钧 发表于 2022-5-7 10:08:54 |只看作者 |坛友微信交流群
我的思路是,先生成一个只包含户编码和配偶年龄的数据文件,然后以户编码为条件进行匹配:

keep hhid age if rlshp==2
rename age age_spouse  //重新命名为配偶年龄
save "工作路径\age_spouse.dta", replace   //保存成一个新的文件

use "原始数据.dta",clear
merge m:1 hhid using  "工作路径\age_spouse.dta"
drop _merge
order age_spouse, after(age)
replace age_spouse = .  if rlshp != 1  //因为这一步匹配之后,同一家庭下的每个个体都会有一个age_spouse的值,但是我们实际上只需要户主的观测中有这个变量数值即可,所以把非户主个体对应的age_spouse替换为缺失值

如果还需要对户主配偶也匹配上户主的年龄,我觉得可以参考上面的思路再做一次匹配,虽然稍微麻烦一些,但应该能行。另外,不太清楚你的数据结构😂只好空写代码,希望能有帮助。

使用道具

报纸
Philoushy 发表于 2022-5-7 18:20:21 |只看作者 |坛友微信交流群
杨富钧 发表于 2022-5-7 10:08
我的思路是,先生成一个只包含户编码和配偶年龄的数据文件,然后以户编码为条件进行匹配:

keep hhid a ...
按此方法已解决,非常感谢耐心回答。

使用道具

地板
zhai1964 发表于 2023-8-30 16:04:28 |只看作者 |坛友微信交流群
杨富钧 发表于 2022-5-7 10:08
我的思路是,先生成一个只包含户编码和配偶年龄的数据文件,然后以户编码为条件进行匹配:

keep hhid a ...
你好 奇怪的是我只是用了这个code:
keep hhid age if rlshp==2
我换成了我这边的变量。就显示:invalid syntax

这个我百思不解呀

使用道具

7
zhai1964 发表于 2023-8-30 16:04:35 |只看作者 |坛友微信交流群
杨富钧 发表于 2022-5-7 10:08
我的思路是,先生成一个只包含户编码和配偶年龄的数据文件,然后以户编码为条件进行匹配:

keep hhid a ...
你好 奇怪的是我只是用了这个code:
keep hhid age if rlshp==2
我换成了我这边的变量。就显示:invalid syntax

这个我百思不解呀

使用道具

8
zhai1964 发表于 2023-8-30 16:04:37 |只看作者 |坛友微信交流群
杨富钧 发表于 2022-5-7 10:08
我的思路是,先生成一个只包含户编码和配偶年龄的数据文件,然后以户编码为条件进行匹配:

keep hhid a ...
你好 奇怪的是我只是用了这个code:
keep hhid age if rlshp==2
我换成了我这边的变量。就显示:invalid syntax

这个我百思不解呀

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-12 17:19