FOR循环以计算R中日期的差异

问题描述

我正在尝试计算以天为单位的数据帧中两个日期之间的差异,并将其保存在同一数据帧的称为延迟的另一列中。这是我的代码,但是不起作用:

Daily_Streamflow$Date
Daily_Streamflow$lag[1] <- 0
j <- 2
for (j in length(Daily_Streamflow$Date)) {
 Daily_Streamflow$lag[j] <-  as.numeric(difftime(Daily_Streamflow$Date[j],Daily_Streamflow$Date[j-1],unit=c("days")))
 j <- j + 1
}

这是我的数据框的外观:

enter image description here

当我将第一天Daily_Streamflow$lag[1]的差值设置为0时,所有剩余值都设置为0。如果我将此值保留为空,则列的所有值都设置为NA 。看起来,虽然j值增加并且循环运行,但代码似乎将第一个滞后值赋给了所有列,忽略了for内部的函数

解决方法

由于您没有为我们提供数据,因此您必须自己进行测试:

Daily_Streamflow$Date
Daily_Streamflow$lag[1] <- 0
for (j in 2:length(Daily_Streamflow$Date)) { # add 2: to create a sequence
  Daily_Streamflow$lag[j] <-  as.numeric(difftime(Daily_Streamflow$Date[j],Daily_Streamflow$Date[j-1],units=c("days")),units = "days") # change 'unit' to 'units' and add 'units' attribute to the 'as.numeric' function as well
  j <- j + 1
}