如何在R DataFrame中为参与者创建标识是否存在condition=2的新变量
解决方案
这里提供两种简便的实现方式,都能快速生成你需要的cond2变量:
方法一:使用dplyr(tidyverse工具包)
如果你习惯用tidyverse生态,可以用分组判断的方式完成:
library(dplyr) # 假设你的数据框名为df df <- df %>% group_by(id) %>% mutate(cond2 = ifelse(any(condition == 2), "yes", "no")) %>% ungroup()
逻辑说明
group_by(id):按参与者id分组any(condition == 2):判断当前分组内是否存在condition=2的记录ifelse:将判断结果转换为"yes"/"no",生成新变量cond2ungroup():取消分组(可选,根据后续操作需求调整)
方法二:使用base R原生函数
如果不想加载额外工具包,可以用ave函数实现:
# 假设你的数据框名为df df$cond2 <- with(df, ifelse(ave(condition == 2, id, FUN = any), "yes", "no"))
逻辑说明
ave(condition == 2, id, FUN = any):按id分组,对每组的condition==2逻辑值应用any函数,返回与原数据行数一致的向量ifelse:将逻辑向量转换为"yes"/"no"并赋值给新变量
两种方法运行后都能得到你预期的结果:
id condition cond2 1 0 yes 1 0 yes 1 1 yes 1 2 yes 2 0 no 2 0 no 2 1 no 3 0 no
内容的提问来源于stack exchange,提问作者Sointu
相关产品推荐
相关产品推荐

