r-为什么这个case_when命令对所有情况执行命令第1列中的



4表示一个表示";其他";。第2列表示";其他";是。我希望在第1列中没有答案4的所有内容在第2列中都有NA。使用case_when并不能得到我所期望的结果。

我有这个数据

col1    col2
1       "a"
4       "c"
4       NA
3       NA

我运行:

df <- df %>%
mutate(col2 = case_when(col1 != 4 ~ NA))

并期待:

col1    col2
1       NA
4       "c"
4       NA
3       NA

但我有

col1    col2
1       NA
4       NA
4       NA
3       NA

我做错了什么?

问题是您的case_when没有col2 == 4的情况。因此返回NA。根据文件:

如果没有匹配的事例,则返回NA。

要修复此问题,请通过TRUE ~ col2将默认值添加到您的案例中_when:

df <- data.frame(
col1 = c(1, 4, 4, 3),
col2 = c("a", "c", NA, NA)
)
library(dplyr)
df %>%
mutate(col2 = case_when(
col1 != 4 ~ NA_character_, 
TRUE ~ col2))
#>   col1 col2
#> 1    1 <NA>
#> 2    4    c
#> 3    4 <NA>
#> 4    3 <NA>

相关内容

  • 没有找到相关文章

最新更新