2016-07-14 60 views
0

我有幾個月給出的數據,並希望將它們轉換爲日期對象。如何將「1987年1月」字符串轉換爲Date對象?

我試過as.Date(as.character(data$Date), format = '%Y %B'沒有成功。這怎麼解決?

代碼&數據

> head(SE.10Y) 
      Date SE.10Y 
1 1987 January 11.7385 
2 1987 February 11.5000 
3 1987 March 11.2586 
4 1987 April 11.2385 
5  1987 May 11.8153 
6  1987 June 11.8120 

> dput(droplevels(head(SE.10Y))) 
structure(list(Date = structure(c(3L, 2L, 5L, 1L, 6L, 4L), .Label = c("1987 April", 
"1987 February", "1987 January", "1987 June", "1987 March", "1987 May" 
), class = "factor"), SE.10Y = c(11.7385, 11.5, 11.2586, 11.2385, 
11.8153, 11.812)), .Names = c("Date", "SE.10Y"), row.names = c(NA, 
6L), class = "data.frame") 

> as.Date(as.character(head(SE.10Y)$Date), format = '%Y %B') 
[1] NA NA NA NA NA NA 
+3

你需要每天有個約會。那些只是幾個月和幾年。我已經看到人們通過簡單地粘貼1表示每月的第一天來完成日期,從而解決了這個問題。 'as.Date(paste(data $ Date,1),format =「%Y%B%d」)' –

+0

有沒有什麼辦法可以將所有文本值(「January」)轉換爲數字?在這種情況下,我可以做一個yearmon變量,這將是很好的。 – uncool

+0

我編輯了我的評論,嘗試刷新頁面 –

回答

1

假設你想要的月初(以UTC),並使用lubridate你:

dates <- c("1987 April", "1987 February", "1987 January", "1987 June", "1987 March", "1987 May") 
lubridate::ymd(paste(dates,"01")) 
[1] "1987-04-01 UTC" "1987-02-01 UTC" "1987-01-01 UTC" "1987-06-01 UTC" "1987-03-01 UTC" "1987-05-01 UTC"