如何从POSIXct类型timestamp列提取年月生成指定格式新列
R语言:从POSIXct时间戳提取月份全称+年份后两位生成新列
现有数据集pr5915包含POSIXct类型的timestamp列,需要新增一列Date,格式为英文全称月份-年份后两位(例如:December-20)。
原始数据集
pr5915<-structure(list(activity = c("Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "BBH-1&2", "Forged Wire, Medium (Sport)", "TCE Cleaning", "SOLO Oil", "Tempering", "TCE Cleaning", "Tempering", "BBH-1&2", "BBH-1&2", "TCE Cleaning", "Tempering"), timestamp = structure(c(-62042010952, -62010323872, -61884118792, -61821087232, -61821025132, -61789534972, -61789520332, -61789494952, -61757940232, -61757925652, -61757895952, -61694827552, -61694808292, -61663337152, -61663307452), tzone = "Europe/Istanbul", class = c("POSIXct", "POSIXt"))), row.names = c(NA, -15L), class = c("eventlog", "log", "tbl_df", "tbl", "data.frame"), case_id = "case_id", activity_id = "activity", activity_instance_id = "action", lifecycle_id = "lifecycle", resource_id = "resource", timestamp = "timestamp")
实现方案
1. Base R 方式
使用strftime()函数直接格式化时间戳,格式符说明:
%B:英文全称月份(如December)%y:年份后两位(如20)
pr5915$Date <- strftime(pr5915$timestamp, format = "%B-%y")
2. Tidyverse/dplyr 方式
如果使用tidyverse工具链,管道式操作更简洁:
library(dplyr) pr5915 <- pr5915 %>% mutate(Date = strftime(timestamp, format = "%B-%y"))
处理后的数据集示例(截取前3行)
structure(list(activity = c("Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)"), timestamp = structure(c(-62042010952, -62010323872, -61884118792), tzone = "Europe/Istanbul", class = c("POSIXct", "POSIXt")), Date = c("January-00", "February-00", "May-00")), row.names = c(NA, -3L), class = c("eventlog", "log", "tbl_df", "tbl", "data.frame"), case_id = "case_id", activity_id = "activity", activity_instance_id = "action", lifecycle_id = "lifecycle", resource_id = "resource", timestamp = "timestamp")
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

