当有空格时,数字会创建NA

问题描述 投票:0回答:1

当使用mutate_at将数据中的变量更改为字符,数字或因子时,数字出现问题:

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)

在这种情况下,我得到一些奇怪的结果:

    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代替空格。

有人可以帮忙吗?

r dplyr na mutate
1个回答
0
投票

您在默认情况下启用stringsAsFactors=TRUE时遇到问题。 options(stringsAsFactors =FALSE)

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, ""), stringsAsFactors=FALSE)

这里您正在转换V5和V6,这可能是通过在其上编写as.numeric来实现的,这是不对的,在这种情况下,您首先应先按as.character然后再按as.numeric。

注意:数字NA在R中显示为NA,而字符NA可以转换为空格。

© www.soinside.com 2019 - 2024. All rights reserved.