全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅 求助成功区
575 2
2022-05-21
悬赏 47 个论坛币 已解决
数据如下:
性别女-0  男-1  缺失--8
孩子1性别 孩子1年龄 孩子1属相 孩子2性别孩子2年龄 孩子2属相 孩子3性别孩子3年龄 孩子3属相
110 2 -8 -8 -8-8 -8 -8
0 24 1 92 -8-8 -8
1 9 1 -8 -8 -8 -8 -8 -8
1 2 2 1 12 2  -8  -8  -8
1 5 3 0 14 2  -8  -8  -8
0 14 3 0 2 5  -8  -8  -8
0 14 3 1 12 2  -8  -8  -8
0 12 5 1 2 5  -8  -8  -8
0 14 7 1 15 21  12 5

我想gen三个新的变量分别是
孩子总数(男+女)
女孩子数
男孩子数
请问应该用什么命令呢?


最佳答案

5330075713 查看完整内容

foreach i in 孩子1性别 孩子1年龄 孩子1属相 孩子2性别 孩子2年龄 孩子2属相 孩子3性别 孩子3属相 孩子3年龄{ cap replace `i' = . if `i' == -8 } gen id = _n order id gather 孩子1性别 孩子1年龄 孩子1属相 孩子2性别 孩子2年龄 孩子2属相 孩子3性别 孩子3年龄 孩子3属相 ,variable(sector) value(num) tempfile file1 save `file1',replace preserve keep if sector == "孩子1性别" |sector == "孩子2性别" |sec ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-5-21 17:48:41
foreach i in 孩子1性别 孩子1年龄 孩子1属相 孩子2性别 孩子2年龄 孩子2属相 孩子3性别 孩子3属相 孩子3年龄{
        cap replace `i' = . if `i' == -8
}
gen id = _n
order id
gather 孩子1性别 孩子1年龄 孩子1属相 孩子2性别 孩子2年龄 孩子2属相 孩子3性别 孩子3年龄 孩子3属相 ,variable(sector) value(num)
tempfile file1
save `file1',replace
preserve
keep if sector == "孩子1性别" |sector == "孩子2性别" |sector == "孩子3性别"
bys id : egen haizizongshu = count(num) if sector == "孩子1性别" |sector == "孩子2性别" |sector == "孩子3性别"
bys id : egen nanhaizongshu = sum(num) if sector == "孩子1性别" |sector == "孩子2性别" |sector == "孩子3性别"
bys id : gen nvhaizongshu = haizizongshu - nanhaizongshu if sector == "孩子1性别" |sector == "孩子2性别" |sector == "孩子3性别"
duplicates drop id ,force
tempfile file2
save `file2',replace
restore
use `file1',clear
merge m:1 id using `file2'
drop _merge
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-21 22:09:05
5330075713 发表于 2022-5-21 17:48
foreach i in 孩子1性别 孩子1年龄 孩子1属相 孩子2性别 孩子2年龄 孩子2属相 孩子3性别 孩子3属相 孩子3年 ...
太感谢了!!
太厉害了!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群