导入-100作为NA

时间:2019-02-28 14:56:10

标签: r xlsx openxlsx

我正在处理一个巨大的Excel文件(成千上万列),研究人员已使用多种方式对NA进行编码,其中包括-100。我将如何导入?我尝试过

library("openxlsx")
df <- read.xlsx("file.xlsx", sheet = 1, colNames = TRUE, detectDates=TRUE, skipEmptyRows=TRUE, na.strings=c("NA", "N/A", "-100", "-"))

但是,-100仍然显示为-100,而不是NA。

1 个答案:

答案 0 :(得分:3)

这似乎是openxlsx::read.xlsx中的错误。我创建了一个小的.xlsx文档,其中包含两列:

enter image description here

然后尝试使用read.xlsx阅读。 na.strings参数似乎效果不佳。它忽略了两个"N/A"值(不需要)的最后一行,并将"-99"值保持原样,而不是根据需要用NA替换它们:

library(openxlsx)
read.xlsx("test.xlsx", na.strings = c("N/A", "-99"))
#   num  char
# 1   1 hello
# 2 -99   -99
# 3   3     3

# for comparison, without na.strings
read.xlsx("test.xlsx")
#   num  char
# 1   1 hello
# 2 -99   -99
# 3   3     3
# 4 N/A   N/A

readxl软件包的性能要好得多:

library(readxl)
read_excel("test.xlsx", na = "-99")
# # A tibble: 4 x 2
#     num char 
#   <dbl> <chr>
# 1     1 hello
# 2    NA NA   
# 3     3 3    
# 4    NA NA   

这使用的是全新安装的openxlsx版本4.1.0和readxl版本1.2.0(当前版本为1.3.0)。


openxlsx github页面上有一个关于na.strings的未解决问题。我添加了这个例子。 You can track/comment on the issue here