如何基于家庭组内是否有成员为1创建二分变量(1,0)
按家庭ID生成二分变量的解决方案
假设你的数据框名为df,家庭ID列是family_id,需要检查的目标列是response(包含1/0或Yes/No),可以用dplyr包的分组操作实现需求:
- 先加载依赖包:
library(dplyr)
- 执行分组计算生成新列:
df <- df %>% group_by(family_id) %>% mutate(has_positive = if_else(any(response %in% c(1, "Yes"), na.rm = TRUE), 1, 0)) %>% ungroup()
代码说明:
group_by(family_id):将数据按家庭ID分组,后续判断逻辑基于每个家庭组执行any(response %in% c(1, "Yes"), na.rm = TRUE):检查当前家庭组内是否有成员的目标列值为1或Yes,na.rm = TRUE用于忽略缺失值,防止NA干扰判断结果if_else(...):将判断结果转换为1/0的二分变量,存在符合条件的成员则赋值1,否则赋值0ungroup():取消数据分组状态,避免影响后续其他数据操作
如果需要生成"是"/"否"格式的二分变量,只需把代码中的1, 0替换为"是", "否"即可。
内容的提问来源于stack exchange,提问作者Lyra Johnson
相关产品推荐
相关产品推荐

