2015-07-25 13 views
5

Używam pakietu openxlsx do odczytu i zapisu plików Excel.Pakiet R openxlsx. pisząc NA jako puste miejsce?

Zauważyłem, że kiedy wyeksportować tabelę do programu Excel z write.xlsx (MyData, file = "MyFile.xlsx") Agencje krajowe wyświetlane jako #LICZBA!, gdy plik zostanie otwarty w programie Excel.

Czy istnieje opcja wyeksportowania go w postaci pustych pól? Mam już google i wypróbowałem opcje, takie jak showNA lub keepNA, ale nie wydają się one mieć żadnego efektu.

+0

Jeśli żaden parametr nie znajduje się w tym pakiecie, można użyć innego programu Excel pisania pakiet lub przekonwertować wartości NA do wykrojów z czymś jak 'df [] <- lapply (DF, function (x) {x [is.na (x)] <- ""; x}) ' –

+2

Nie mogę zrozumieć potępienia. Sądziłem, że niektórzy ludzie wiedzą, jak to zrobić, może to być ważne i użyteczne dla innych użytkowników. Pytałem na github openxlsx i jeśli nie istnieje ta opcja, wyślę prośbę o ferowanie. – skan

Odpowiedz

2

Nie mogę zrozumieć potępienia. Sądziłem, że niektórzy ludzie będą wiedzieli, jak to zrobić, używając tylko jednej opcji, bez potrzeby ręcznego formowania każdej NA.

Jak myślę, że może to być ważne i użyteczne dla innych użytkowników Ja również poproszony o github stronie rozwoju openxlsx i oni odpowiedzieli:

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

W przypadku ktokolwiek jest zainteresowany, jeśli aktualizację do wersji dev z

devtools::install_github("awalker89/openxlsx") 

otrzymasz wsparcie dla tej funkcji.

domyślne zachowanie teraz jest konwersja NAS wygasza A jeśli chcemy mieć # N/D musimy użyć opcji keepNA = TRUE opcja keepNA = TRUE utrzymuje # 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

Dobre pytanie! Jeden, na który też patrzyłem. Wierzę, że domyślnym zachowaniem jest wyprowadzanie wartości NA jako pustych. Jednak, jak pokazano w przykładowym kodzie, masz wartości NA i NaN. Obecność jednej lub więcej wartości w kolumnie spowoduje, że wartości w tej kolumnie pojawią się w Excelu jako #NUM!.

Aby rozwiązać ten problem, należy wymienić wszystkie wystąpienia NaN w pliku z NA przed eksportowania pliku:

df[is.na(df)] = NA

Zauważ użycie is.na zamiast is.nan gdy x jest data.frame.

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

+0

, ale myślę, że powinno to zostać poprawione w openxlsx – skan

Powiązane problemy