我有一些时间数据作为数据集的一部分 - 让我们调用df,这种格式会使操作变得困难。让我们把这个时间变量称为" time"。以下是数据的一些示例:
df$time
12/17/2012
1945
1950
2032
2/24/2012
2206
2209
2211
如您所见,时间变量列以给定日期(mm / dd / yyyy)开始,然后是在同一日期发生的给定事件的时间(hhmm)。
是否可以携带'将月,日和年值降低到相应的小时和时间值?我希望我的数据最终看起来像这样:
df$time
12/17/2012 19:45
12/17/2012 19:50
12/17/2012 20:32
2/24/2012 22:06
2/24/2012 22:09
2/24/2012 22:11
谢谢!
答案 0 :(得分:2)
首先使用以下内容转换小时格式:
time=gsub("^(\\d{2})(\\d{2})$","\\1:\\2",time)
然后找到日期的位置:
pos=grep("\\d+/\\d+/\\d+",time)
然后构建结果向量:
dates=rep(time[pos],times=(diff(c(pos,length(time)+1))-1))
hours=time[-pos]
time=paste(dates,hours)
最后,如果您需要,可以将其转换为POSIXct
:
time=as.POSIXct(time,format="%m/%d/%Y %H:%M")
答案 1 :(得分:0)
使用dplyr
中的na.locf
进行zoo
式回答。他的作品是将日期和时间分隔为单独的列,并显示“/”,将日期与na.locf
结合,过滤掉原始日期行,将列粘贴在一起,然后将其转换为{{1} }
POSIXct