将含时分的时间戳转换为日期时遇零长度变量名错误求助
解决时间戳转换报错及计算事件后时长的问题
核心问题:时间格式符使用错误
你的时间戳格式是年-月-日-时-分,但之前的代码用错了格式符:
- 小时应该用
%H(24小时制),你误用了%h(代表缩写月份,比如Jul) - 分钟应该用
%M,你误用了%m(代表两位数字的月份)
另外,as.Date()仅处理日期部分,会丢失时分信息;如果需要保留完整时间,建议用as.POSIXct()。
你遇到的Error in assign(cacheKey, frame, .rs.CachedDataEnv)是RStudio缓存机制触发的衍生错误,根源是时间解析失败导致数据框异常,解决格式问题后该报错会自动消失。
修复后的代码(两种场景)
场景1:仅转换日期,计算事件后天数
sample <- c(1,2,3,4,5) timestamp <- c('2023-07-17-15-05','2023-07-17-16-05','2023-07-17-17-05','2023-07-18-15-05','2023-07-17-19-05') area <- c(255,345,200,177,189) df <- data.frame(sample,timestamp,area) # 正确解析日期 df$date <- as.Date(df$timestamp, format='%Y-%m-%d-%H-%M') # 计算以第一个日期为基准的天数差 df$days_since_first <- as.numeric(df$date - min(df$date))
场景2:保留完整时间,计算事件后小时数
sample <- c(1,2,3,4,5) timestamp <- c('2023-07-17-15-05','2023-07-17-16-05','2023-07-17-17-05','2023-07-18-15-05','2023-07-17-19-05') area <- c(255,345,200,177,189) df <- data.frame(sample,timestamp,area) # 解析为带时分的时间对象 df$datetime <- as.POSIXct(df$timestamp, format='%Y-%m-%d-%H-%M') # 计算以第一个时间为基准的小时差 df$hours_since_first <- as.numeric(difftime(df$datetime, min(df$datetime), units = "hours"))
内容的提问来源于stack exchange,提问作者Stylopidae
相关产品推荐
相关产品推荐

