我有一个数据集,其中许多列具有 NA
字符,因为它们依赖于另一个列响应。例如:
df <- data.frame(X_home = c("Yes", "Yes", "No"),
X_school = c("No", "Yes", "No"),
Y_home = c("A", "B", NA),
Y_school = c(NA, "A", NA))
如果我使用mutate()
,我可以这样做:
df %>% mutate(Y_home = if_else(X_home == "No", "C", Y_home),
Y_school = if_else(X_school == "No", "C", Y_school))
得到我想要的东西。但问题是我有很多 X_something
和 Y_something
。所以我想用类似的东西来做:
df %>% mutate(across(starts_with("Y_"), ~ if_else(...))
可能吗?
非常感谢。
最佳答案
使用str_replace
替换列名的子字符串(cur_column()
)后,我们可以获取
对应列的值
library(dplyr)
library(stringr)
df %>%
mutate(across(starts_with("Y_"),
~ case_when(get(str_replace(cur_column(), "Y_", "X_")) == "No" ~
"C", TRUE ~ .x)))
-输出
X_home X_school Y_home Y_school
1 Yes No A C
2 Yes Yes B A
3 No No C C
关于r - 我可以使用 mutate() 和 across() 根据许多其他列来改变许多列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72263741/