编码具有NA的多个变量

时间:2020-10-17 03:36:22

标签: r

我在R中创建了变量,对于某些人,该人的值显示为NA。

id   x_SD   y_SD
1    NA      5
2    34      9
3    5       NA

对于所有以“ _SD”结尾的变量,我希望NA的值为0。像这样:

id   x_SD   y_SD
1    0       5
2    34      9
3    5       0        

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

使用dplyr,您可以执行以下操作:

library(dplyr)
df %>% mutate(across(ends_with('_SD'), ~replace(., is.na(.), 0)))
#We can also use `replace_na` from tidyr
#df %>% mutate(across(ends_with('_SD'), tidyr::replace_na, 0))

#  id x_SD y_SD
#1  1    0    5
#2  2   34    9
#3  3    5    0

在基数R中,您可以选择要更改为0的列并直接替换。

cols <- grep('_SD$', names(df))
df[cols][is.na(df[cols])] <- 0

答案 1 :(得分:0)

我们可以使用na_if

library(dplyr)
df %>%
    mutate(across(ends_with('_SD'),  ~na_if(., 0)))