naniar :: replace_with_na_all меняет факторные переменные на целые? - PullRequest
1 голос
/ 30 октября 2019

У меня есть набор данных, в котором некоторые пропущенные значения закодированы как -99, и я попытался использовать функцию naniar replace_with_na_all, чтобы заменить эти значения на NA. Функция делает это, но, похоже, она также конвертирует мои факторные переменные в целые числа, теряя тем самым имя факторов.

Это происходит независимо от того, имеет ли сам фактор какие-либо истинные (NA) недостающие значения или нет, чтоВы можете видеть в примере ниже (в tibble1 фактор имеет пропущенное значение с самого начала, в tibble2 это не так).

library(tidyverse)
library(naniar)

# Example factor with missing values
tibble1 <- tribble(
  ~x, ~y,
  "a", 1,
  -99, 2,
  "c", -99
)

tibble1$x <- as.factor(tibble1$x) 


levels(tibble1$x) <- list("A" = "a",
                          "C" = "c")

# Showing original tibble and then after replace_with_na_all is used
tibble1
tibble1 %>% naniar::replace_with_na_all(condition = ~.x == -99) 




# Example factor without missing values
tibble2 <- tribble(
  ~x, ~y,
  "a", 1,
  "b", 2,
  "c", -99
)

tibble2$x <- as.factor(tibble2$x) 


levels(tibble2$x) <- list("A" = "a",
                          "B" = "b",
                          "C" = "c")

# Showing original tibble and then after replace_with_na_all is used
tibble2
tibble2 %>% naniar::replace_with_na_all(condition = ~.x == -99)  

Нет сообщения об ошибке, я просто не ожидал такого поведения ине может найти причину этого (или способ обойти это) в документации. Это ошибка? Функция?

Справка.

1 Ответ

0 голосов
/ 30 октября 2019

Есть ли конкретная причина для использования naniar, или вы можете использовать dplyr? dplyr сохраняет типы данных в ваших столбцах:

> dplyr::mutate_all(tibble1, funs(replace(., . == -99, NA)))
# A tibble: 3 x 2
  x         y
  <fct> <dbl>
1 a         1
2 NA        2
3 c        NA

> dplyr::mutate_all(tibble2, funs(replace(., . == -99, NA)))
# A tibble: 3 x 2
  x         y
  <fct> <dbl>
1 a         1
2 b         2
3 c        NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...