繁体   English   中英

R Strptime年份和月份没有分隔符返回NA

[英]R Strptime Year and Month with No Delimiter returning NA

我可能做了一些愚蠢而没有看到它的东西,但是:

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

从帮助strptime:

%Y世纪
%m作为十进制数的月份(01-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> 

这是标准的POSIX行为,年份为“年 - 1900”,月份为零索引。

七年后编辑:为了完整性,并且正如有人赞成这个,我的随时包中的函数可以帮助:

R> anytime::anydate("201101")    ## returns a Date
[1] "2011-01-01"
R> anytime::anytime("201101")    ## returns a Datetime
[1] "2011-01-01 CST"
R> 

使用不同的解析器(来自Boost Date_time ,它更慷慨并且会导致丢失的一天(或第二种情况下的日/小时/分钟/秒)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM