在R中,当删除" NA"时,明确的格式错误。

时间:2016-01-22 15:36:16

标签: r

我试图简单地将列的NA值转换为空白以准备Excel导出。我的代码返回以下错误:

> class(manifest_final$MIN_SAIL_DATE)
[1] "Date"
> head(manifest_final$MIN_SAIL_DATE)
[1] "2016-10-23" NA           "2016-10-23" NA           NA           NA          
> manifest_final$MIN_SAIL_DATE[is.na(manifest_final$MIN_SAIL_DATE)] <- ''
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

列MIN_SAIL_DATE实际上是来自sqlQuery {RODBC}函数的计算列,然后将{plyr}连接到另一个表。该列最初是POSIX格式,我将其强制为Date。

EDIT :::

以下代码解决了我在查询数据后立即执行的问题:

next_sail$MIN_SAIL_DATE <- as.character.Date(next_sail$MIN_SAIL_DATE)

以下联接用于将next_detail上的两个详细信息列附加到manifestperson_num = MIN_SAIL_DATE上的SAIL_SAIL_DATE

manifest <- merge(manifest, next_detail, by.x = c('PERSON_NUM', 'MIN_SAIL_DATE'), by.y= c('PERSON_NUM', 'SAIL_SAIL_DTE'), all.x = TRUE)

当在连接之前发生格式更改时,我丢失了NA但也丢失了附加数据。当合并后移动格式更改时,我得到原始的Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format

下面是数据样本。然后删除NA我失去了连接中带圆圈的代码。我假设它的格式问题

code snippet

1 个答案:

答案 0 :(得分:1)

对于您正在使用的写入功能(例如write.csv),请使用na选项设置NA字符

write.csv(manifest_final, your_output_file, na = '')

您当然可以在write.csv中添加您正在使用的其他选项。此选项也应该在其他write.*函数中可用。

<强> EDITS

的问题
manifest_final$MIN_SAIL_DATE[is.na(manifest_final$MIN_SAIL_DATE)] <- ''

是您尝试将Date向量元素设置为character字符串。

虽然我认为上述解决方案(使用na=)是可行的方法,但您也可以将MIN_SAIL_DATE列转换为字符串,然后将NA列设置为空字符串。