вспомогательная функция в 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

Просто знайте, что только потому, что мы можем заменитьNAs с 0не значит, что мы должны. Я полагаю, у тебя есть отличная причина, почему NAs должно быть 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)
Другие вопросы по тегам