web-dev-qa-db-fra.com

R dates "origine" doivent être fournies

Mon code:

axis.Date(1,sites$date, Origin="1960-10-01")

Erreur:

Error in as.Date.numeric(x) : 'Origin' must be supplied

Pourquoi me demande-t-il l'origine quand je l'ai fournie dans le code ci-dessus?

42
Nate

Je suppose que vous vouliez dire:

axis.Date(1, as.Date(sites$date, Origin = "1960-10-01"))

comme l'argument 'x' de as.Date() doit être de type Date.

En passant, cela aurait été approprié comme suivi ou modification de votre question précédente.

37

Mon R utilise 1970-01-01:

>as.Date(15103, Origin="1970-01-01")
[1] "2011-05-09"

et cela correspond au calcul de

>as.numeric(as.Date(15103, Origin="1970-01-01"))
18
kennyut

Si vous avez à la fois des informations de date et d'heure dans la valeur numérique, utilisez as.POSIXct. Le format IDateTime du package Data.table est un tel cas. Si vous utilisez fwrite pour enregistrer un fichier, le package convertit automatiquement les dates-heures au format idatetime qui est l'heure unix. Pour reconvertir au format normal, vous pouvez effectuer les opérations suivantes.

Exemple: supposons que vous ayez un horodatage Unix avec les informations de date et d'heure: 1442866615

> as.POSIXct(1442866615,Origin="1970-01-01")
[1] "2015-09-21 16:16:54 EDT"
6
ilyas

Une autre option est le package lubridate:

library(lubridate)

x <- 15103
as_date(x, Origin = lubridate::Origin)
"2011-05-09"

y <- 1442866615
as_datetime(y, Origin = lubridate::Origin)
"2015-09-21 20:16:55 UTC"

De la documentation:

L'origine est la date-heure du 01-01-1970 UTC au format POSIXct. Cette date-heure est l'origine du système de numérotation utilisé par les classes POSIXct, POSIXlt, chron et Date.

6
sbha

Donc, généralement, cela a été résolu, mais vous pouvez obtenir ce message d'erreur, car la date que vous utilisez n'est pas au format correct.

Je sais que c'est un ancien poste. Mais chaque fois que je lance ceci, je reçois NA tout au long de ma colonne de date. Mes dates sont dans ce format 20150521 - NealC 5 juin 15 à 16:06

Si vous avez des dates de ce format, vérifiez simplement le format de vos dates avec:

str(sides$date)

Si le format n'est pas un caractère, convertissez-le:

as.character(sides$date)

Pour as.Date, vous n'aurez plus besoin d'une origine, car elle n'est fournie que pour les valeurs numériques. Ainsi, vous pouvez utiliser (en supposant que vous avez le format de NealC):

as.Date(as.character(sides$date),format="%Y%m%d)

J'espère que cette migration aidera certains d'entre vous.

0
RBeginner