R语言如何将Unix双精度时间戳转换为日期并提取年份
R实现Unix时间戳转日期+提取年份方案
你当前代码存在两个小问题:
- 管道操作后的
head(as.POSIXct(...))语句没有纳入dplyr的处理流程,转换结果没有保存到数据框中,后续无法直接调用 - 多做了无必要的类型转换:只要
created_t是数值类型,不需要先转integer、再转character再转numeric,可以直接传入时间转换函数
你提到的操作参考截图如下:
基于dplyr管道的正确实现
直接在mutate中一步完成时间转换、年份提取,结果会直接存到数据框新列里,后续可以直接调用:
library(dplyr) food <- food %>% mutate( # 转换为标准日期格式,注意:如果是毫秒级时间戳请把created_t替换为created_t/1000 standard_date = as.POSIXct(created_t, origin = "1970-01-01", tz = "GMT"), # 提取年份,二选一即可 year_char = format(standard_date, "%Y"), # 输出字符型年份,如"2024" year_num = lubridate::year(standard_date) # 需要先安装lubridate包,输出整数型年份,如2024,适合统计计算 )
如果只是想临时查看前6条转换结果,不需要写入数据框,可以直接运行:
head(as.POSIXct(food$created_t, origin="1970-01-01", tz="GMT"))
注意:如果转换后得到的日期明显不符合预期(比如出现几十年后、或者几百年前的日期),先确认时间戳是秒级还是毫秒级:Unix时间戳如果是13位数字就是毫秒级,必须除以1000之后再传入
as.POSIXct才能得到正确结果。
内容的提问来源于stack exchange,提问作者asdffsas
相关产品推荐
相关产品推荐

