微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。