0

我有一个带有 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")

但是,当我尝试使用cbind我的 data.frame 时,它​​会出错

“参数意味着不同的行数”

因为 a 比原始 data.frame 短一行。

任何帮助将不胜感激。

4

1 回答 1

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在两者之间进行转换。

于 2016-06-15T04:45:33.523 回答