Импортировать -100 как NA - PullRequest
       122

Импортировать -100 как NA

0 голосов
/ 28 февраля 2019

Я имею дело с огромным файлом Excel (тысячи столбцов), и исследователи использовали различные способы кодирования ДНК, в том числе -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 голосов
/ 28 февраля 2019

Это ошибка в 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.Я добавил этот пример. Вы можете отслеживать / комментировать проблему здесь .

...