由于您没有提供 MRE,我不得不自己创建它:
df<- data.frame(id = 1:5,
Prefix_1 = c(1, 2, 3, NA, 5),
Prefix_2 = c(NA, 1, 2, 3, NA))
解决方案,如何NA
用虚构数据替换:
df[, grepl("^Prefix_", names(df))][is.na(df[, grepl("^Prefix_", names(df))])] <- 0
df 现在是:
id Prefix_1 Prefix_2
1 1 1 0
2 2 2 1
3 3 3 2
4 4 0 3
5 5 5 0
请注意,仅因为我们可以替换NA
s0
并不意味着我们应该。我假设你有一个很好的理由为什么 NA
s 应该是0
;)
编辑:
解决方案dplyr
:
df<- data.frame(id = 1:5,
Prefix_1 = c(1, 2, 3, NA, 5),
Prefix_2 = c(NA, 1, 2, 3, NA))
library(dplyr)
df %>%
mutate_at(vars(matches("^Prefix")), coalesce, 0)
或者,使用dplyr
and tidyr::starts_with
:
library(dplyr)
library(tidyr)
df %>%
mutate_at(vars(starts_with("Prefix")), coalesce, 0)