R语言中如何将符合条件的相同值填充到新列对应分组行
解决方案
方法1:使用dplyr包实现(代码简洁易读,扩展性强)
核心逻辑是按id、condition分组后,提取每组内stimulus == "anger"对应的answer值,填充到组内所有行:
library(dplyr) mydata <- mydata %>% group_by(id, condition) %>% mutate(answerFormatted = ifelse(is.na(condition), NA, answer[stimulus == "anger" & test_part == "emotion"])) %>% ungroup()
方法2:基础R实现(无需额外安装依赖包)
# 提取所有符合要求的anger类stimulus对应的answer值 anger_vals <- mydata$answer[mydata$stimulus == "anger" & mydata$test_part == "emotion"] # 提取按出现顺序排列的非NA condition值 cond_levels <- unique(na.omit(mydata$condition)) # 按分组填充对应值 for (i in seq_along(cond_levels)) { mydata$answerFormatted[mydata$condition == cond_levels[i]] <- anger_vals[i] }
两种方案运行后得到的answerFormatted列和你给出的预期结果完全匹配,支持多id、多条件组的场景直接复用。
内容的提问来源于stack exchange,提问作者user275801
相关产品推荐
相关产品推荐

