【发布时间】:2021-01-14 01:00:27
【问题描述】:
我有下面列出的格式的数据,其中我需要使用的所有变量都是NA 或变量的名称,我需要将 NA 更改为 0 并将字符串更改为 1。我我正在尝试使用dplyr::across() 和ifelse(),但返回的都是1。我现在唯一可行的解决方案是单独改变每个变量。
如何一次将多个变量中的所有 NAs 更改为 0 并将所有字符串更改为 1?
library(dplyr)
color_names <- c("black", "grey", "white", "purple")
my_colors <- tribble(
~black, ~grey, ~white, ~purple,
NA, "grey", NA, "purple",
NA, NA, "white", NA,
"black",NA, NA, NA,
NA, "grey", NA, NA
)
my_colors %>%
mutate(across(all_of(color_names), ~ifelse(is.na(cur_column()), 0, 1)))
#> # A tibble: 4 x 4
#> black grey white purple
#> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 1 1
#> 2 1 1 1 1
#> 3 1 1 1 1
#> 4 1 1 1 1
由reprex package (v0.3.0) 于 2021-01-13 创建
【问题讨论】: