全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3669 4
2022-03-31

CHFS数据库中的个人层面数据库有hhid pline rela(本人与受访者关系,1本人2配偶6子女7儿媳/女婿 8孙子女),hhid+pline可以识别出唯一个体。数据库中一共有两类家庭,三代人一家(如图1,rela有12678)和两代一家(如图2,rela只有126).如何在实现将父母的受教育程度匹配到子女那一行呢?
我已经试过的方法:
复制代码
但是依然在新的文件中出现了学历为3.5,2.333的情况,也就是说一个家庭有两个或以上的父亲学历变量,然后被取了均值,请问是哪里出了问题呢?
三代家庭 二代家庭



艾特了一下黄老师,打扰您了!
二维码

扫码加我 拉你入群

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

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

全部回复
2022-4-12 11:15:31
用SQL的方式表达下吧(在R中作为示例)
# 户主及配偶&男
t1 <- sqldf(“SELECT hhid, edu AS edu1 FROM tbl WHERE pline IN (1 , 2) AND gender  = 0”)
# 户主及配偶&女
t2 <- sqldf(“SELECT hhid, edu AS edu2 FROM tbl WHERE pline IN (1 , 2) AND gender  = 1”)
# 户主之子
t6M <- sqldf(“SELECT hhid, edu AS edu6m FROM tbl WHERE pline =6 AND gender  = 0”)
# 户主之女
t6F <- sqldf(“SELECT hhid, edu AS edu6f FROM tbl WHERE pline =6 AND gender  = 1”)
# 户主之媳
t7F <- sqldf(“SELECT hhid, edu AS edu7f FROM tbl WHERE pline =7 AND gender  = 1”)
# 户主之婿
t7M <- sqldf(“SELECT hhid, edu AS edu7m FROM tbl WHERE pline =7 AND gender  = 0”)
# 户主之孙子女
t8 <- sqldf(“SELECT hhid, edu AS edu8 FROM tbl WHERE pline =8”)


# 数据合并
dat <- merge(t1, t2, by  = 'hhid', all.x = T)
dat <- merge(dat, t6M, by = 'hhid', all.x = T)
dat <- merge(dat, t6F, by = 'hhid', all.x = T)
dat <- merge(dat, t7M, by = 'hhid', all.x = T)
dat <- merge(dat, t7F, by = 'hhid', all.x = T)
dat <- merge(dat, t8, by = 'hhid', all.x = T)

这种方式按照家庭,把人口结构给体现出来了(同一个家庭中,子女的关系是不唯一的,6/7标签的,对应标签为8,无法完全准确判断是否子女关系啊,和人口普查统计的数据格式还是有一些差别的吧)
如上的这种数据格式,可能便于分析。
不用SQL表达,直接用R的方式修改如下:
t1 <- subset(tbl, (pline %in% c(1, 2)) & (gender = 0),  select = c(hhid, edu))
names(t1) <- c('hhid', 'edu1')
或者用tidyverse包来搞
t1 <- (tbl %>% filter(pline %in% c(1, 2), gender = 0) %>% select(hhid, edu))
names(t1) <- c('hhid', 'edu1')
其他类似

############################################################
如果要把两代家庭,和三代家庭的分开,也可以用拆分数据的方式得到
比如两代和三代的分类
tftyp2 <- sqldf("SELECT hhid, MAX(pline) AS ftype FROM tbl GROUP BY hhid HAVING MAX(pline) IN (6, 7)")
tftyp3 <- sqldf("SELECT hhid, MAX(pline) AS ftype FROM tbl GROUP BY hhid HAVING MAX(pline) = 8")


基本思路是不管咋折腾,围绕hhid来弄,用pline识别结构(如果设计数据的时候,性别包含在pline中可能会更加方便点,是不是为了体现男女平等,所以没明确规定吧)
二维码

扫码加我 拉你入群

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

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

2022-5-15 14:59:22
abelus 发表于 2022-4-12 11:15
用SQL的方式表达下吧(在R中作为示例)
# 户主及配偶&男
t1
太感谢了!受教了!
二维码

扫码加我 拉你入群

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

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

2023-11-7 14:40:17
请问楼主有遇到过一个家庭里有多个父亲信息的情况吗(关系为父母,且性别为男)此时应该怎么处理呢
二维码

扫码加我 拉你入群

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

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

2024-2-20 20:13:58
CatherineOange 发表于 2022-5-15 14:59
太感谢了!受教了!
你好 请问这个方法用stata语句怎么表达呀 没看懂sql语句
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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