我有一个Id Column&数据框。日期栏。
基本上,我想创建第三列(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短一行。
非常感谢任何帮助。
答案 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
在两者之间进行转换。