2016-11-21 1 views
0

Je voudrais amicalement poser une question sur la conversion de données numériques en format Date.Convertir des données numériques telles que "715" en date "Juillet-2015" en R

Je voudrais convertir les données numériques comme:

time1<-c(715, 1212, 0416) 

à

July-2015, Dec-2012, Apr-2016 

J'ai essayé ce code, mais il ne fonctionne pas.

time2<-as.Date(as.character(time1), format="%m%y") 

Est-ce que quelqu'un a des idées pour résoudre ce problème?

+1

Quelle langue? C#? Java? Prolog? – user2023861

+0

voulez-vous dire TimeStamp –

+0

C'est le langage 'R'. Désolé, j'oublie de clarifier. – Joanna

Répondre

2

Une partie de la question est que "Juillet 2015", "Décembre 2012", et "Avril 2016" ne sont pas les dates depuis le jour spécifique est manquante. Une autre approche consiste à convertir à zoo::yearmon. Ici, l'entrée numérique doit être converti en une chaîne avec zéro de sorte que le mois est de 01 à 12:

library(zoo) 
ym <- as.yearmon(sprintf("%04d",time1),format="%m%y") 
ym 
##[1] "Jul 2015" "Dec 2012" "Apr 2016" 

Le résultat est de classe yearmon, qui peut alors être contraint à Date:

class(ym) 
##[1] "yearmon" 
d <- as.Date(ym) 
d 
##[1] "2015-07-01" "2012-12-01" "2016-04-01" 
class(d) 
##[1] "Date" 
2

Essayez lubridate::parse_date_time():

library(lubridate) 
time2 <- parse_date_time(time1, orders = "my") 
format.Date(time2, "%b-%Y") 
[1] "juil.-2015" "déc.-2012" "avril-2016" # my locale lang is French 
+0

Merci beaucoup @scoa. La chose intéressante est ce code convertir "715" en "Jun-2015". Je suppose que le mois est de 0 à 11? Je pense que cette solution est proche mais existe-t-il un moyen de convertir le mois de 1 à 12? – Joanna

+1

On dirait que le code convertit '715' en 'Jul-2015', comme prévu. – BLT