2015-07-25 1 views
5

Я использую пакет openxlsx для чтения и записи файлов Excel.R openxlsx пакет. написав NA как пробелы?

Я заметил, что когда я экспортировать таблицу в Excel с write.xlsx (MyData, файл = "MyFile.xlsx") NAs появляются в # число!, когда файл открывается в Excel.

Есть ли возможность экспортировать его так же, как пробелы? Я использую googling и пробовал варианты, такие как showNA или keepNA, но они, похоже, не имеют никакого эффекта.

+0

Если параметр не найден в этом пакете, вы можете использовать другое преуспевание писать пакет или преобразовать значения НСА в заготовки с чем-то вроде 'ДФА [] <- lapply (Д.Ф., функция (х) {x [is.na (x)] <- ""; x}) ' –

+2

Я не понимаю нисходящее направление. Я думал, что некоторые люди будут знать, как это сделать, это может быть важным и полезным для других пользователей. Я спросил у openxlsx github, и если он не существует, этот вариант я вышлю ferery запрос. – skan

ответ

2

Я не могу понять нижний предел. Я думал, что некоторые люди будут знать, как это сделать, используя только опцию, без необходимости вручную настраивать каждый NA.

Как я думаю, что это может быть важным и полезным для других пользователей, я также просил на странице развития GitHub openxlsx, и они ответили:

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

В случае, если кто-то интересно, если вы обновление до версии Dev с

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

Хороший вопрос! Я тоже смотрел. Я считаю, что поведение по умолчанию IS выводит значения NA как пробелы. Однако, как вы показываете в своем примере кода, вы имеете значения NA и NaN. Присутствие одного или нескольких значений NaN в столбце приведет к тому, что все значения NA и NaN в этом столбце отображаются в Excel как #NUM!.

Чтобы это исправить, заменить все экземпляры NaN в файле с NA до экспорта файла:

df[is.na(df)] = NA

Обратите внимание на использование is.na, а не is.nan, когда х является data.frame.

См: How to replace NaN value with zero in a huge data frame?

+0

, но я думаю, что это должно быть исправлено в openxlsx – skan

Смежные вопросы