Warum funktioniert dmy () im lubridate-Paket nicht mit NAs? Was ist eine gute Problemumgehung?

8

Ich bin über ein seltsames Verhalten im Paket lubridate gestolpert: dmy(NA) führt einen Fehler durch, anstatt nur eine NA zurückzugeben. Das verursacht mir Probleme, wenn ich eine Spalte mit einigen Elementen konvertieren will, die NAs und einige Datumsstrings sind, die normalerweise ohne Probleme umgewandelt werden.

Hier ist das minimale Beispiel:

%Vor%

Zusammenfassend habe ich zwei Fragen: 1) Warum funktioniert dmy (NA) nicht? Basierend auf den meisten anderen Funktionen würde ich annehmen, dass es eine gute Programmierpraxis ist, dass jede Transformation (wie dmy ()) von NA wieder NA zurückgibt (genauso wie 2 + NA )? Wenn dieses Verhalten beabsichtigt ist, wie konvertiere ich eine Spalte data.frame , die NA s enthält, über die Funktion dmy() ?

    
Christoph_J 31.10.2011, 15:26
quelle

2 Antworten

5

Der Error in function (..., sep = " ", collapse = NULL) : invalid separator wird durch die Funktion lubridate:::guess_format() verursacht. Das NA wird als sep in einem Aufruf an paste() weitergegeben, speziell an fmts <- unlist(mlply(with_seps, paste)) . Sie können versuchen, die lubridate:::guess_format() zu verbessern, um dies zu beheben.

Sonst könnten Sie einfach NA in Zeichen ( "NA" ) ändern?

%Vor%     
jthetzel 31.10.2011, 16:37
quelle
2

Da Ihre Daten in einem vernünftig einfachen Format vorliegen, ist es möglicherweise einfacher, as.Date zu verwenden und das entsprechende Argument format anzugeben:

%Vor%

Eine Liste der von as.Date verwendeten Formatierungscodes finden Sie unter ?strptime

    
Andrie 31.10.2011 16:06
quelle

Tags und Links