R语言字符转POSIXct时年份显示00xx而非20xx的解决方法
解决字符型时间戳转换中年份显示为0024的问题
你的问题根源在于时间格式参数使用错误:
- 你当前用的
%Y是4位年份的格式符,但数据中的年份是2位(24),所以R会将其解析为0024而非2024。 - 正确的格式符应该是
%y,用于匹配2位年份,R会默认将1-68映射为2001-2068,69-99映射为1969-1999,刚好符合你的需求。
方法1:修改base R的as.POSIXct格式参数
直接调整格式字符串中的年份部分:
want <- have %>% mutate(timestamp = base::as.POSIXct(Device.Timestamp, format = "%m/%d/%y %H:%M"))
方法2:使用lubridate包简化解析
如果愿意使用其他函数,lubridate包的mdy_hm()函数可以自动识别月/日/年 时:分的格式,无需手动指定格式符:
library(lubridate) want <- have %>% mutate(timestamp = mdy_hm(Device.Timestamp))
验证结果
执行上述任意代码后,查看want$timestamp会得到正确的时间格式:
# 输出示例 [1] "2024-01-28 00:01:00 UTC" "2024-01-28 00:05:00 UTC" [3] "2024-01-28 00:11:00 UTC" "2024-01-28 00:14:00 UTC"
内容的提问来源于stack exchange,提问作者EtoiledeMoyenOrient
相关产品推荐
相关产品推荐

