我在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
有人可以帮忙吗?
答案 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)))