R之间的时间段

时间:2016-06-15 04:30:47

标签: r dataframe difftime

我有一个Id Column&数据框。日期栏。

enter image description here

基本上,我想创建第三列(Diff)来计算日期之间的差异,最好按ID分组。

我从以下代码构建了一个大型POSIXlt

c_time <- as.POSIXlt(df$Gf_Date)
a <- difftime(c_time[1:(length(c_time)-1)], c_time[2:length(c_time)], units = weeks")

但是,当我在我的data.frame上尝试cbind时,会出现错误

  

“参数意味着行数不同”

as a比原始data.frame短一行。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

由于差异只能在两个后续日期之间进行,因此第一个条目未定义。因此,合理的选择是将第一个值设置为NA

这可能有效:

c_time <- as.POSIXlt(df$Gf_Date)
a <- c(NA,`units<-`(diff(c_time),"weeks"))
cbind(df,diff.dates=a)

(给@thelatemail提示,以获得有关简化a定义的宝贵建议。)

PS:请注意,与原始方法相比,a中的差异可能会有不同的符号。根据您喜欢的惯例,您可以使用a <- -a在两者之间进行转换。