长格式数据下group_by函数生成个体统一二分类变量失效求助
长格式住院数据个体心脏住院标记解决方案
你的问题出在只判断了当前行的住院原因,没有对整个个体(ID分组)的所有记录做整体检查。要实现同ID所有记录统一标记,需要用any()函数判断分组内是否存在心脏骤停住院的记录,再生成二分类变量。
修正后的代码
data %>% group_by(ID) %>% # 检查当前ID下是否有任意一条记录是心脏骤停住院,转成1/0格式 mutate(Ever_Cardiac = as.integer(any(reason_for_hospitalisation == "Cardiac"))) %>% ungroup() # 可选,不需要保留分组时取消
如果习惯用ifelse,也可以写成:
data %>% group_by(ID) %>% mutate(Ever_Cardiac = ifelse(any(reason_for_hospitalisation == "Cardiac"), 1, 0)) %>% ungroup()
关键说明
any(reason_for_hospitalisation == "Cardiac"):在每个ID分组内,只要有一条记录的住院原因是"Cardiac",就返回TRUE,否则返回FALSEas.integer():把逻辑值TRUE转成1,FALSE转成0,得到你需要的二分类变量- 注意把原代码里的中文引号换成英文引号,否则会出现语法错误
内容的提问来源于stack exchange,提问作者user25184725
相关产品推荐
相关产品推荐

