如何将日期字符串转换为POSIXct格式并生成时间戳数值?
解决日期字符串转Unix时间戳问题
你的代码出现NA的原因有两个:
- 错误地将列名用引号包裹成字符串
'created_at',导致R尝试把字符串"created_at"转成数值,而非处理数据框里的列内容 - 日期字符串无法直接转成数值,必须先解析为POSIXct类型的日期时间对象,再转换为Unix时间戳(秒为单位的数值)
正确的处理代码(dplyr版本)
tweets <- tweets %>% mutate(created_at_dt = as.numeric( as.POSIXct(created_at, format = "%a %b %d %H:%M:%S %z %Y") ))
代码说明
as.POSIXct(created_at, format = "%a %b %d %H:%M:%S %z %Y"):按照你的日期字符串格式解析为POSIXct对象,各格式符含义:%a:缩写星期名(如Fri)%b:缩写月份名(如May)%d:两位日期(如26)%H:%M:%S:时分秒(如17:30:01)%z:时区偏移(如+0000)%Y:4位年份(如2017)
as.numeric():将POSIXct对象转换为Unix时间戳(从1970-01-01 00:00:00 UTC开始的秒数),正好匹配你需要的数值格式
验证示例
用你的第一个日期字符串测试:
as.numeric(as.POSIXct("Fri May 26 17:30:01 +0000 2017", format = "%a %b %d %H:%M:%S %z %Y")) # 输出:1495819801
和你期望的结果完全一致。
内容的提问来源于stack exchange,提问作者Rhea Ramtohul
相关产品推荐
相关产品推荐

