R中日期之间的时间段

Time period between dates in R

我有一个包含 ID 列和日期列的数据框。

基本上,我想创建第三列 (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 时,它出错了

"arguments imply differing number of rows"

因为a比原来的data.frame少了一行。

如有任何帮助,我们将不胜感激。

由于只能在两个后续日期之间取差,因此第一个条目未定义。因此,一个合理的选择是将第一个值设置为 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 在两者之间进行转换。