Verwenden Sie Lubridate
Paket, wie kann ich das numerische Alter zwischen zwei Zeiten, unter Berücksichtigung von Schaltjahren bestimmen.R lubridate, Berechnen Alter einschließlich Schaltjahren
Ich brauche eine Funktion, wo der Benutzer angeben kann, ob das Alter in allen verschiedenen Einheiten sein soll, zB 'Millisekunden', 'Sekunden', 'Minuten', 'Wochen', 'Monate' und 'Jahre' .
Hier ist eine Darstellung von dem, was ich bisher bekommen habe:
age <- function(from, to = today(), units = "years", floor = FALSE) {
calc = interval(from,to)/duration(num = 1, units = units)
if (floor) calc = as.integer(floor(calc))
calc
}
Das Jahr 2016 ist ein Schaltjahr, läßt das Alter zwischen Start- und Endzeiten in dem Monat Juni bestimmen. Es sollte 30 Tage sein.
require(lubridate)
#Consider month of June 2016, known to have 30 days
from = as.POSIXct("2016-6-1")
to = from + months(1)
daysInYear = 365 + leap_year(to)
age(from,to,units='days') #30.00, CORRECT
age(from,to,units='years')*daysInYear #30.08, INCORRECT
age(from,to,units='years')*365 #30.00, CORRECT ANSWER, WRONG DAYS IN YEAR
Wenn ich das gleiche Intervall in "Jahren berechnen, gibt sie: 0.08219178
, die nicht korrekt ist, da die Dauer Divisor in der Alters Funktion wird nicht für das Jahr 2016 entfallen ein Schaltjahr ist, ich es brauchen Berechne 0.08196721
, was der gleiche Wert multipliziert mit (365/366) ist.
Gibt es einen einfacheren Weg, um das genaue numerische Alter zwischen zwei Daten zu bestimmen, Schaltjahre zu berücksichtigen und die vollständige Angabe von Intervalleinheiten zuzulassen?
'diff.Date' für Schaltjahre bilanzieren soll. Wo ist Ihr Beweis, dass es nicht so ist? –
Ein anderer Betrogener: [Wie man eine Spalte vom Geburtsdatum zum Alter in R ändert?] (Http://stackoverflow.com/q/27096485/903061) – Gregor
Im nicht verwendenden diff.Date, Beweis ist in meinen Beispielen oben. –