read.xlsx Lesen von Daten falsch, wenn kein Datum in Spalte

8

Das Paket xlsx liest Daten falsch ein. Ich habe alle Top-ähnliche Q hier gelesen und hatte einen Scout rund um das Internet, aber ich kann dieses bestimmte Verhalten nicht finden, wo sich der Ursprung ändert, wenn in einer Spalte nicht-Datum Daten sind.

Ich habe eine kleine Excel-Tabelle, die Sie von Dropbox erhalten können:

Zypern

Es hat drei Zeilen, zwei Spalten. Das erste ist ein Datum, das zweite ist eine Zahl. Die dritte Zeile hat "Grand Total" in der Datumsspalte.

Wenn ich die ersten beiden Zeilen mit read.xlsx einlese und sage, dass die erste Spalte ein Datum ist, dann funktioniert das:

%Vor%

Das sind tatsächlich die Daten in der Tabelle. Wenn ich versuche, alle drei Zeilen zu lesen, geht etwas schief:

%Vor%

Wenn ich versuche, als Ganzzahlen einzulesen, bekomme ich verschiedene Ganzzahlen:

%Vor%

Die ersten ganzen Zahlen werden korrekt konvertiert mit as.Date(s1$X1,origin="1970-01-01") (Unix-Epoche) und die zweiten ganzen Zahlen werden korrekt konvertiert mit as.Date(s2$X1, origin="1899-12-30") (Excel-Epoche). Wenn ich das zweite Los um 1970 umwandle, bekomme ich die 2084 Daten.

Also: Mache ich etwas falsch? Ist die beste Sache, als ganze Zahlen zu lesen, und wenn irgendwelche NAs dann mit Excel-Epoche konvertieren, andernfalls Unix-Epoche verwenden? Oder ist es ein Fehler im Paket xlsx ?

xlsx-Version ist Version: 0.5.1

    
Spacedman 06.08.2014, 11:17
quelle

3 Antworten

4

XLConnect ist in der Lage, mit dieser hübschen Süßigkeit umzugehen:

%Vor%

Das Problem, das Sie haben, ist offensichtlich, dass die erste Spalte vom gemischten Typ ist: character und POSIXct . XLConnect kann jede Zelle korrekt lesen, aber alle Zellen einer Spalte werden dann auf den gebräuchlichsten Typ geschrieben, der in diesem Fall character ist.

%Vor%     
Beasterfield 06.08.2014 11:39
quelle
0

Die Daten können als Ganzzahlen gelesen und später mit der Funktion convertToDate () in Date konvertiert werden.

Weitere hier

    
Ali 19.07.2017 04:33
quelle
0

Das Problem, das Sie haben, ist, dass Excel die Anzahl der Tage seit Jan-0-1900 speichert, und das ist die Nummer, die R aus der Excel-Datei liest. Wenn Sie in R konvertieren, konvertieren Sie basierend auf der Anzahl der Tage seit dem 1. Januar 1970. Wenn Sie die Anzahl der Tage zwischen diesen beiden zuerst abziehen, sollte es funktionieren.

    
Tracy 03.02.2018 15:35
quelle

Tags und Links