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
在两者之间进行转换。
我有一个包含 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
在两者之间进行转换。