我有时间采用这种格式:
t <- "4/2/2004 12:45"
I can extract day and month using these two lines:
strptime(t, "%m/%d/%Y %H:%M", tz="UTC")$day
strptime(t, "%m/%d/%Y %H:%M", tz="UTC")$mday
但这并没有给我我想要的岁月。我给了我没有世纪的一年:
strptime(t, "%m/%d/%Y %H:%M", tz="UTC")$year
我怎样才能准确地获得这一年?像1987年,2012年等,而不是87和12。
如果还有其他功能可供使用,我也可以。
答案 0 :(得分:6)
添加1900.请参阅?POSIXlt
的详细信息部分,了解详情。
> tm <- "4/2/2004 12:45"
> strptime(tm, "%m/%d/%Y %H:%M", tz="UTC")$year
[1] 104
> strptime(tm, "%m/%d/%Y %H:%M", tz="UTC")$year + 1900
[1] 2004
答案 1 :(得分:2)
使用lubridate
来满足您所有直观的时间戳处理需求:
library(lubridate)
t <- "4/2/2004 12:45"
t2 <- mdy_hm(t) # parsing format: month-day-year_hour-minute
day(t2)
yday(t2)
year(t2)
答案 2 :(得分:2)
使用基础包:
t <- "4/2/2004 12:45"
as.numeric(format(as.Date(t, "%m/%d/%Y %H:%M", tz="UTC"), "%Y"))
结果是:
[1] 2004