在R中如何将包含额外信息的列转换为日期格式并提取时间字段
解决方案
你可以直接通过正则表达式一次性提取所需的三个字段,也可以通过R内置的时间解析函数处理,后者适配后续绘图需求的效率更高,更适合200万行级别的数据处理。
方法1:基于正则的字段提取
沿用你现有的正则处理逻辑,补充两行代码即可拿到Month和Time字段:
# 你已有的提取Day字段的代码 df$Day <- sub("([A-Za-z]+).*", "\\1", df$created_at) # 提取月份(第一个单词后的第二个英文字符段) df$Month <- sub("^[A-Za-z]+ ([A-Za-z]+).*", "\\1", df$created_at) # 提取时分秒字段 df$Time <- sub(".*(\\d{2}:\\d{2}:\\d{2}).*", "\\1", df$created_at)
处理后你不需要保留临时的delete字段,直接得到你需要的三列输出。
方法2:时间对象解析(更推荐)
直接把created_at解析为R的标准时间对象,后续做时间序列绘图不需要再做格式转换,处理百万行数据的效率也比多次正则替换更高:
# 解析为标准POSIXct时间对象,指定对应格式和时区 df$datetime <- as.POSIXct(df$created_at, format = "%a %b %d %H:%M:%S PDT %Y", tz = "America/Los_Angeles") # 从时间对象提取所需字段 df$Day <- strftime(df$datetime, "%a") df$Month <- strftime(df$datetime, "%b") df$Time <- strftime(df$datetime, "%H:%M:%S")
如果后续需要按日期统计、做时间轴绘图,直接用datetime列即可,不需要额外做格式转换。
内容的提问来源于stack exchange,提问作者Dinho
相关产品推荐
相关产品推荐

