R openxlsx包。把NA写成空白?

时间:2015-07-25 16:06:58

标签: r excel na

我使用openxlsx包来读写Excel文件。

当我将表格导出到Excel时,我注意到了 write.xlsx(MyData,file =" MyFile.xlsx") 在Excel上打开文件时, NAs 显示为 #NUM!

有没有选择将其导出为空白? 我正在使用谷歌搜索和尝试选择,如showNA或keepNA,但他们似乎没有任何影响。

2 个答案:

答案 0 :(得分:3)

我无法理解downvote。我认为有些人只知道如何使用一个选项,而不需要手动改变每个NA。

我认为这对其他用户来说非常重要和有用,我也曾在openxlsx的github开发页面上询问过,他们回答说:

 https://github.com/awalker89/openxlsx/issues/108#issuecomment-125142950

如果有人感兴趣,如果您使用

更新到开发版本
 devtools::install_github("awalker89/openxlsx")

您将获得此功能的支持。

现在的默认行为是将NAs转换为空白 如果我们想要#N / A,我们必须使用选项keepNA = TRUE 选项keepNA = TRUE保持#N / A

require('openxlsx')
df <- head(iris)
df[2,3] <- NA
df[2,5] <- NA
df[3,5] <- NaN
openXL(write.xlsx(df, file = tempdir()))

enter image description here

 require('openxlsx')
 df <- head(iris)
 df[2,3] <- NA
 df[2,5] <- NA
 df[3,5] <- NaN
 openXL(write.xlsx(df, file = tempdir(), keepNA = TRUE))

enter image description here

答案 1 :(得分:2)

好问题!一个我一直在看的人。我相信默认行为是将NA值输出为空白。但是,正如您在示例代码中显示的那样,您有NANaN值。列中存在一个或多个NaN值将导致该列中的所有NANaN值在Excel中显示为#NUM!

要解决此问题,请在导出文件之前用NaN替换文件中NA的所有实例:

df[is.na(df)] = NA

请注意,当x是data.frame时,使用is.na而不是is.nan

请参阅:How to replace NaN value with zero in a huge data frame?