2016-11-21 43 views
0

我想友好地問一個關於將數字數據轉換爲日期格式的問題。將數字數據(例如「715」)轉換爲日期「July-2015」中的R

我想數字數據轉換,如:

time1<-c(715, 1212, 0416) 

July-2015, Dec-2012, Apr-2016 

我嘗試了這些代碼,但它無法正常工作。

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

有沒有人有一些想法來解決這個問題?

+1

什麼語言? C#? Java的? Prolog的? – user2023861

+0

你的意思是時間戳 –

+0

它是'R'語言。對不起,我忘了澄清。 – Joanna

回答

2

部分原因是,「2015年7月」,「2012年12月」和「2016年4月」都沒有日期,因爲特定的一天丟失。另一種方法是轉換爲zoo::yearmon。這裏,數字輸入需要被轉換爲字符串與前導零,使得月是從0112

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

結果是yearmon類,然後可將其強制爲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

嘗試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

非常感謝你@scoa。有趣的是這段代碼將「715」轉換爲「2015年6月」。我假設這個月是從0到11?我認爲這個解決方案非常接近,但是有什麼辦法將月份從1轉換爲12? – Joanna

+1

看起來像預期的那樣,代碼將「715」轉換爲「2015年7月」。 – BLT