вспомогательная функция в R
Я пытаюсь заменить NA на 0 для некоторых конкретных переменных независимо от их положения. я написал ниже код, но получаю некоторую ошибку..
data1[, starts_with("Year_")][is.na(data1[, starts_with("Year_")])] <- 0
я получил ошибку ниже
Error: No tidyselect variables were registered
Call `rlang::last_error()` to see a backtrace
Я установил dplyr
, tidyr
, tidyselect
, но все же я получаю эту ошибку, может ли кто-нибудь мне помочь в этом вопросе.
1 ответ
Поскольку вы не предоставили 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)