Dan*_*iel 2 conditional replace r dplyr
我想用另一列中同一行中的值替换匹配特定条件的一列中的值。考虑以下示例:
library(tidyverse)
data <- tribble(
~X25, ~Other,
"a", NA,
"b", NA,
"Other", "c",
"Other", "d"
)
View(data)
# Works to change values in X25
within(data, {
X25 <- ifelse(X25 == "Other", Other, X25)
})
# Changes values in X25 to NA and doesn't replace X25 with appropriate value from Other column
data %>% mutate(X25 = replace(X25, X25 == "Other", Other))
Run Code Online (Sandbox Code Playgroud)
使用“内”的代码效果很好。如果需要,如何使用dplyr(作为较长的mutate / summary过程的一部分)?
编辑:这是与dplyr更改变量的值不同的方案。我不想盲目地为所有匹配的单元分配相同的值(例如,NA)。我想从另一个特定的专栏文章中提取它们。
使用replace,长度应相同,因此我们还需要Other使用逻辑表达式对进行子集化
data %>%
mutate(X25 = replace(X25, X25 == "Other", Other[X25=="Other"]))
Run Code Online (Sandbox Code Playgroud)
另一种选择是 case_when
data %>%
mutate(X25 = case_when(X25=="Other"~ Other,
TRUE ~ X25))
Run Code Online (Sandbox Code Playgroud)
要么 ifelse
data %>%
mutate(X25 = ifelse(X25 == "Other", Other, X25))
Run Code Online (Sandbox Code Playgroud)