as.numeri c создает NA при наличии пробелов - PullRequest
0 голосов
/ 20 февраля 2020

При использовании mutate_at для изменения переменных в моих данных на символ, цифру c или факторы, у меня возникают проблемы с цифрами c:

library(dplyr)

f <- c('V1', 'V2')
c <- c('V3', 'V4')
n <- c('V5', 'V6')

data <- data.frame(V1 = c(0,2,""),
                   V2 = c("", 3, 4),
                   V3 = c(1, 2, 3),
                   V4 = c(0, 0, ""),
                   V5 = c(-1, -1, ""),
                   V6 = c(0, 1, ""))

data <- data %>% 
        mutate_at(f, as.factor) %>%
        mutate_at(c, as.character) %>%
        mutate_at(n, as.numeric)

В этом параметре c случай, в результате я получаю что-то странное:

    V1 V2 V3 V4 V5 V6
  1  0     1  0  2  2
  2  1  3  2  0  2  3
  3     4  3     1  1

В других случаях, как и в моих исходных данных, вместо пробелов я получаю NA.

Может кто-нибудь помочь

1 Ответ

0 голосов
/ 20 февраля 2020

Как насчет использования readr::parse_guess для подходящих конверсий?

library(dplyr)
library(readr)
data %>% mutate_all(~parse_guess(as.character(.x)))
#  V1 V2 V3 V4 V5 V6
#1  0 NA  1  0 -1  0
#2  2  3  2  0 -1  1
#3 NA  4  3 NA NA NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...