Поскольку вы не предоставили 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
s на 0
, не означает мы должны . Я полагаю, у вас есть веская причина , почему 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
и tidyr::starts_with
:
library(dplyr)
library(tidyr)
df %>%
mutate_at(vars(starts_with("Prefix")), coalesce, 0)