求助:在Understanding Society数据框创建两类特定人群子集
问题分析与修正
你的代码核心问题是逻辑运算符使用错误:&代表“逻辑且”,意味着要求racel_dv同时等于多个不同值(比如同时等于1、2、4),这在逻辑上不可能成立,所以生成的标识变量全为FALSE,自然无法得到正确子集。需要用|(逻辑或)表示“满足其中任一条件”。
另外,在within()函数内部无需重复写British$,直接引用变量名即可,函数会自动在British数据框的环境中查找变量。
修正后的代码
British <- subset(df, ukborn > 0 & ukborn < 5) df1 <- within(British, { White_native <- racel_dv == 1 | racel_dv == 2 | racel_dv == 4 Second_Generation <- racel_dv == 9 | racel_dv == 10 })
额外优化建议
如果要判断的取值较多,可用%in%运算符简化代码,让逻辑更清晰:
df1 <- within(British, { White_native <- racel_dv %in% c(1, 2, 4) Second_Generation <- racel_dv %in% c(9, 10) })
修改后,你可以通过subset(df1, White_native)或subset(df1, Second_Generation)直接提取对应的目标子集。
内容的提问来源于stack exchange,提问作者monkegobrrrrrr
相关产品推荐
相关产品推荐

