2017-07-18 4 views
1

J'ai essayé de faire un facteur à ce jour.R lubrifier. Qu'est-ce qui ne va pas?

X:

Jul-15 
Jul-15 
Jul-15 
Jul-15 
Aug-16 

Je veux les convertir à une date.

X <- as.Date(Xx, format="%b-%y") 

Résultats dans les NA.

Ce fut ma source pour le code: https://www.r-bloggers.com/date-formats-in-r/

+0

did u essayé ceci: x <- as.Date (as.character (Xx, format = "% b-% y")) – AntonCH

+0

Pouvez-vous éditer votre question et inclure les résultats de 'dput (head (Xx))'? – Masoud

Répondre

2

as.Date est la fonction de base de R, as_date est la fonction lubridate, mais ce n'est pas votre problème

Sans jour, vous n'êtes pas en spécifiant complètement la date complètement. Contrairement à l'année, où R remplira avec l'année en cours, cela ne semble pas se passer un jour manquant

Pour contourner ce problème, exécutez:

X <- as.Date(paste0(Xx,'-01'), format="%b-%y-%d") 

qui fixera les dates pour être le premier le mois

0

La fonction yearmon du package zoo vous aidera ici. Comme vous avez lubridate comme balise sur la question, nous pouvons ensuite utiliser as_date du package lubridate pour le transformer en objet de date. La fonction de base as.Date fonctionnera également.

library(zoo) 
library(lubridate) 

as_date(as.yearmon(Xx, "%b-%y")) 

[1] "2015-07-01" "2015-07-01" "2015-07-01" "2015-07-01" "2016-08-01" 

Si vous voulez les laisser en classe yearmon, vous pouvez simplement lancer:

as.yearmon(Xx, "%b-%y") 

[1] "Jul 2015" "Jul 2015" "Jul 2015" "Jul 2015" "Aug 2016" 
0

Vous avez besoin d'une date complète, avec le jour:

library(lubridate) 
X <- "Jul-15" 
X <- paste("01", X, sep="-") 
dmy(X)