繁体   English   中英

两个日期之间的差异变量

[英]Difference a variable between two dates

我正在尝试在 R 中使用 dplyr 来区分两个日期之间的变量。

一个简化的例子:

# Simple script to test calculating the difference of a column between two dates
library(dplyr)
library(lubridate)
library(tibble)

dataA <- as.tibble(ymd('2020-01-01') + days(seq(0:45)))
colnames(dataA) = c('date')
dataA <- dataA %>% mutate(xvar = seq(0:45))

#add the difference in xvar between two dates
dataA <- dataA %>% mutate(startd = date, endd=date+days(3))

dataA <- dataA %>% group_by(date) %>% 
         filter(date >= startd & date <= endd) %>% mutate(vardiff = last(xvar)-first(xvar))

我为最后一条语句尝试了多种不同的可能性,但无法获得我正在寻找的计算结果。 我想要实现的是 1 月 5 日和 1 月 2 日之间 xvar 的差异,依此类推整个时间序列。 如何使用 dplyr 语句实现这一点?

谢谢!

我们可以使用findInterval ,这在没有完全匹配的情况下也应该有效

library(dplyr)
dataA %>% 
    mutate(vardiff = xvar[findInterval(endd, date)] - 
        xvar[findInterval(startd, date)])

或者在base R

transform(dataA, vardiff = xvar[findInterval(endd, date)] - 
        xvar[findInterval(startd, date)])

您可以使用match获取startdendd的索引以获取相应的xvar并减去它们:

library(dplyr)
dataA %>%
  mutate(vardiff = xvar[match(endd, date)] - xvar[match(startd, date)])

这也可以使用transform以 R 为基数编写:

transform(dataA, vardiff = xvar[match(endd, date)] - xvar[match(startd, date)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM