R数据列错误使用数据[data ==""]< - NA

时间:2015-06-10 18:56:20

标签: r date na

我正在处理一个包含各种列类的数据集,包括class" Date"。我尝试按以下方式为此数据集中的所有空值分配NA:

data[data==""] <- NA

显然,日期列在这里出现了一些问题,因为存在以下错误:

Error in charToDate(x) : 
character string is not in a standard unambiguous format

我真的不知道为什么会出现这个错误,因为日期列中没有空值,因此它不应该发生。日期列中的日期采用标准格式&#34;%Y-%m-%d&#34;。

这里有什么问题,如何解决?

1 个答案:

答案 0 :(得分:2)

您可以为“日期”类以外的其他列创建逻辑索引,并使用该索引将''替换为NA

 indx <- sapply(data, class)!='Date'
 data[indx][data[indx]==''] <- NA

创建问题的是'Date'类。另一种选择是将数据转换为matrix,以便所有列都为character

 data[as.matrix(data)==''] <- NA

或者@Frank建议(并使用replace

 data[indx] <- lapply(data[indx],  function(x) replace(x, which(x==''), NA))

数据

 set.seed(49)
 data <- data.frame(Col1= sample(c('',LETTERS[1:3]), 10, replace=TRUE), 
      Col2=sample(c('',LETTERS[1:2]), 10, replace=TRUE), 
      Date=seq(as.Date('2010-01-01'),length.out=10, by='day'),
       stringsAsFactors=FALSE)