当使用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
代替空格。
有人可以帮忙吗?
您在默认情况下启用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可以转换为空格。