将所有空白值视为变量" NA"没有硬编码

时间:2017-12-22 13:12:40

标签: r shiny dplyr tidyr

我有一个数据集,其中包含空值,我希望在一般说明中知道,我想将这些空值视为公共字符值而不分配或硬编码数据中的任何值,这样null也被认为是一个变量。例如:假设有两个向量:

a1 <- c("a1","a2","","a3")
a2 <- c("b1","b2","b3","b4")
a12 <- data.frame(a1,a2)

基本上,我有一个更大的数据,考虑到所有空白值为&#34; na&#34;没有为空白字段分配任何值。

3 个答案:

答案 0 :(得分:3)

R base完成这项工作。试试a12[a12 == ""] <- NA

a12
#    a1 a2
#1   a1 b1
#2   a2 b2
#3 <NA> b3
#4   a3 b4

答案 1 :(得分:1)

另一种可能性是将is.na<-与(逻辑)索引向量一起使用。

is.na(a12) <- a12 == ""
a12
#    a1 a2
#1   a1 b1
#2   a2 b2
#3 <NA> b3
#4   a3 b4

请注意,数字索引向量which(a12 == "")也可以完成这项工作。

答案 2 :(得分:0)

dplyr解决方案:

暂时在管道内为空字符串分配NA值:

a12%>% mutate_all(. %>% ifelse(. == '',NA,.)) %>% ....

(或相同,更长但更传统的语法:

a12%>% mutate_all(function(x) ifelse(x == '', NA, x)) %>% ....

在此之后,再加上%>% ...,您可以对数据做一些事情

相关问题