[英]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
获取startd
和endd
的索引以获取相应的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.