2011-07-29 28 views
11

我可能做一些愚蠢的事,並沒有看到它,但:[R Strptime年和月有沒有分隔符返回NA

> strptime("201101","%Y%m") 
[1] NA 

從幫助strptime:

%Y年份與世紀
%m月份爲十進制數(01-12)

+0

您發現* * strptime * *的文檔錯誤必須全部提供,並且從未在任何地方聲明:*「對於strptime,輸入字符串不需要完全指定日期:假定未指定秒,分鐘或小時爲零,未指定的年份,月份或日期爲當前日期。「* – smci

回答

12

只需粘貼每天領域(比如 「01」),您忽略:

R> shortdate <- "201101" 
R> as.Date(paste(shortdate, "01", sep=""), "%Y%m%d") 
[1] "2011-01-01" 
R> 

我喜歡as.Date()日期和strptime()POSIXct對象,即日期和時間。

然後,您可以轉換解析Date對象爲POSIXlt對象檢索年份和月份:

R> mydt <- as.Date(paste(shortdate, "01", sep=""), "%Y%m%d") 
R> myp <- as.POSIXlt(mydt) 
R> c(myp$year, myp$mon) 
[1] 111 0 
R> 

這是年「年度 - 1900」標準POSIX行爲和個月零索引。

+0

所以在R中,您不能說沒有日期數字,您必須注入假設01.奇怪。 – userJT