Frage

Nach der Konvertierung der Faktoren in das POSIXCT-Format und der anschließenden Anwendung des Datetime-Formats möchte ich die Datetime-Differenz zwischen 2 pos1 und pos2 ermitteln.

Wenn ich das jedoch für ein bestimmtes Element mache, erhalte ich die richtige Antwort in der Konsole, aber wenn ich den Vorgang für den gesamten Satz ausführe, gibt die Konsole nur Zahlen aus und auch der Datumsrahmen spiegelt diese Zahlen wider, wie Sie sehen können.

Wie kann ich die Stunden im Datenrahmen abrufen, wenn ich versuche, die Differenz zu ermitteln?Ich verwende das Lubridate-Paket. Gibt es dafür eine Funktion?

Hier ist ein Beispielcode/Bild der Daten in RStudio, die es beschreiben

CR_Date <- data.frame(
  pos1="2014-07-01 00:00:00",
  pos2=c("2014-07-01 00:00:00","2014-07-01 10:15:00")
)
CR_Date[] <- lapply(CR_Date,as.POSIXct)
CR_Date

#        pos1                pos2
#1 2014-07-01 2014-07-01 00:00:00
#2 2014-07-01 2014-07-01 10:15:00

CR_Date$pos2[2] - CR_Date$pos1[2]
#Time difference of 10.25 hours
CR_Date$hours <- CR_Date$pos2 - CR_Date$pos1

enter image description here

War es hilfreich?

Lösung

Erstens hat das nichts mit Schmiermittel zu tun.

Zweitens hat RSTUDIO Sie durch Schrauben mit dem Drucken der Variablen im Anzeigefenster gelassen.Wenn Sie CR_Date$hours in das Fenster "Befehlszeilen" eingeben, sehen Sie IT-Drucke

generasacodicetagpre.

und head(CR_Date) gibt:

generasacodicetagpre.

von denen entweder Sie abgetippt hätten, was er zeigt.

AS @VICTORP schlägt vor, difftime ist der Weg, um dies zu beheben:

generasacodicetagpre.

Andere Tipps

Sie können auch das „as.double Methode" und ihre units Argument (vgl ?diffime):

as.double Methode [as.double(x, units = "auto", ...)] gibt den numerischen Wert zurück, ausgedrückt in den angegebenen Einheiten

...Wo x Ist

ein Objekt, das von der Klasse erbt "difftime"

Auf Ihr Beispiel angewendet, wo pos2 - pos1 wird zu einem führen difftime Objekt:

CR_Date$hours <- as.double(CR_Date$pos2 - CR_Date$pos1, units = "hours")
CR_Date

#        pos1                pos2 hours
#1 2014-07-01 2014-07-01 00:00:00  0.00
#2 2014-07-01 2014-07-01 10:15:00 10.25

Oder andere units:

as.double(CR_Date$pos2 - CR_Date$pos1, units = "mins")
#[1]   0 615

as.double(CR_Date$pos2 - CR_Date$pos1, units = "days")
#[1] 0.0000000 0.4270833
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top