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

FOR loop to calculate difference on dates in 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
}

这是我的数据框的样子:

当我将第一天的差异 Daily_Streamflow$lag[1] 设置为 0 时,所有剩余值都设置为 0。如果我将此值保留为空,则该列的所有值都设置为 NA.看起来代码把第一个滞后的值放到了所有的列中,省略了for里面的函数,虽然j值增加并且循环运行。

由于您没有为我们提供数据,所以您需要自行测试:

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
}