Haben lubridate Subtraktion Rückkehr nur einen numerischen Wert
Frage
Ich habe eine Variable mit dem Namen Started
, die das Datum, an dem menschlichen Probanden in einer Studie und eine andere Variable namens dos1
eingeschrieben, die das Datum, auf dem das Thema letzte Operation hatte. Ich möchte herausfinden, wie viele Monate seit ihrer letzten Operation bis zum Tag der Einschreibung. Ich habe versucht:
as.period(syrrupan$Started-syrrupan$dos1,units=c("month"))
Ich erwartete das mir gibt so etwas wie:
14, 18, 1, 26
Mit jeder Zahl die Anzahl der Monate.
I Stattdessen erhalten:
1 year, -4 months, -5 days and -1 hours 1 year, -5 months, -23 days and -1 hours 1 year, -7 months, 2 days and -1 hours 1 year, -8 months, -28 days and 1 hour 1 year, -7 months, -23 days and 1 hour.
Wie kann ich nur den numerischen Wert von Monaten?
Lösung
Sie könnten mit difftime
versuchen stattdessen, das heißt:
difftime(syrrupan$Started,syrrupan$dos1,units="days")
Beachten Sie, dass dies wird Ihnen ein Objekt der Klasse difftime
, wenn Sie einen numerischen Vektor wollen, wickeln einen as.numeric
um ihn herum. Beachten Sie auch, dass Sie nicht wählen Monate als Option für Einheiten, aber Sie sollten wirklich mit einer Zeiteinheit halten, die eine feste Länge hat.
Andere Tipps
Das ist definitiv ein Fehler in lubridate. Ich habe einen Fehler gemacht Bericht und behebt es für Version 0.1:
http://github.com/hadley/lubridate/issues#issue/75
Vielen Dank für die es um meine Aufmerksamkeit zu bringen.