如何用dplyr的mutate+ifelse关联两个DataFrame生成新列
解决方法
要实现这个逻辑,关键是先把A和B通过col2列关联起来,再做条件判断,具体代码如下:
library(dplyr) # 假设B表包含col2(用于匹配)和col3(判断阈值的列) vals_for_plot <- A %>% # 左连接B表,给B的col3加后缀避免重名冲突 left_join(B, by = "col2", suffix = c("", "_from_B")) %>% # 根据B表的col3值生成目标新列 mutate(col3 = ifelse(col3_from_B < 0.05, "other", col2)) %>% # 移除临时用到的B表列(可选,根据需求决定是否保留) select(-col3_from_B)
如果A里有部分col2值在B中找不到匹配项,可以在ifelse里补充处理逻辑,默认保留原col2值:
mutate(col3 = ifelse(!is.na(col3_from_B) & col3_from_B < 0.05, "other", col2))
这样就完成了需求:当A的col2对应B的col3值小于0.05时,新列col3设为"other",否则沿用A的col2值。
内容的提问来源于stack exchange,提问作者cookiemonster
相关产品推荐
相关产品推荐

