Wie konvertiert man das Date- oder Datetime-Feld, wenn einige Teile leer sind; na.omit schlägt fehl

8

Ich habe einen Datensatz mit Datums- und Zeitangaben für In und Out. Jede Zeile ist ein In- und Out-Set, einige sind jedoch leer. Ich kann die Leerzeichen mit na.omit und einem netten Einlesen entfernen (es war ein csv, und na.strings=c("") funktioniert auf read.csv ).

Natürlich, weil die reale Welt nie wie das Tutorial ist, sind die Zeiten manchmal nur Datumsangaben, also gibt mein as.POSIXlt(Dataset$In,format="%m/%d/%Y %H:%M") NA am "einzigen Datum keine Zeit" zurück.

na.omit löscht diese Zeilen nicht. also sind die Fragen 2

  1. Warum funktioniert na.omit nicht oder wie kann ich es zum Laufen bringen?

  2. Besser, wie kann ich eine Spalte sowohl im Datums- als auch im Zeitformat (im Posix-Format) ohne 2 Aufrufe oder mit einem beliebigen optionalen Parameter in der Formatzeichenfolge konvertieren? (oder ist das überhaupt möglich?).

Dies ist ein Beispiel für die Daten und Uhrzeiten. Ich kann die echte Datei nicht teilen, 1 ist riesig, 2 ist PII.

%Vor%     
Rufus Shinra 19.11.2015, 19:48
quelle

2 Antworten

4
%Vor%

na.omit funktioniert nicht mit POSIXlt -Objekten, da dokumentiert ist, "Vektoren, Matrizen und Datenrahmen zu verarbeiten, die Vektoren und Matrizen (nur)" enthalten. (siehe help("na.omit") ). Und im engeren Sinne sind POSIXlt -Objekte keine Vektoren:

%Vor%

Es gibt kaum einen Grund, POSIXlt über POSIXct vorzuziehen (was eine Ganzzahl ist, die die Anzahl der Sekunden seit dem Ursprung intern angibt und daher weniger Speicher benötigt).

    
Roland 19.11.2015, 20:18
quelle
2

Ihnen wurden ein paar Strategien gegeben, die diese Zeichenwerte in "In-Place" bringen und verarbeiten. Ich verwende fast nie as.POSIXlt , da es im Umgang mit den Listen-in-List-Strukturen, die zurückgegeben werden, so viele Fallstricke gibt, insbesondere in Anbetracht der effektiven Inkompatibilität mit Datenrahmen. Hier ist eine Methode, die den Test und die Nötigung auf der read. -Ebene durchführt, indem sie eine as -Methode:

definiert %Vor%

Die structure "Hüllkurve" wird benötigt, weil das Verhalten von ifelse etwas merkwürdig ist und sonst eher ein numerisches Objekt als ein Objekt der Klasse'POSIXct 'zurückgibt.

    
42- 19.11.2015 20:36
quelle

Tags und Links