使用数据的 R 日期列错误 [data==""] <- NA
R date column error using data[data==""] <- NA
我正在处理一个包含各种列 class 的数据集,包括 class "Date"。我尝试通过以下方式将 NA 分配给此数据集中的所有空值:
data[data==""] <- NA
显然这里的日期列出了点问题,因为出现了如下错误:
Error in charToDate(x) :
character string is not in a standard unambiguous format
我真的不知道为什么会出现这个错误,因为日期列中没有空值,所以它应该不会发生。日期列中的日期采用标准格式“%Y-%m-%d”。
这里有什么问题,我该如何解决?
您可以为 'Date' class 以外的子集列创建逻辑索引,并使用它来将 ''
替换为 NA
indx <- sapply(data, class)!='Date'
data[indx][data[indx]==''] <- NA
造成问题的是 'Date' class。另一种选择是将数据转换为 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)
我正在处理一个包含各种列 class 的数据集,包括 class "Date"。我尝试通过以下方式将 NA 分配给此数据集中的所有空值:
data[data==""] <- NA
显然这里的日期列出了点问题,因为出现了如下错误:
Error in charToDate(x) :
character string is not in a standard unambiguous format
我真的不知道为什么会出现这个错误,因为日期列中没有空值,所以它应该不会发生。日期列中的日期采用标准格式“%Y-%m-%d”。
这里有什么问题,我该如何解决?
您可以为 'Date' class 以外的子集列创建逻辑索引,并使用它来将 ''
替换为 NA
indx <- sapply(data, class)!='Date'
data[indx][data[indx]==''] <- NA
造成问题的是 'Date' class。另一种选择是将数据转换为 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)