我正在尝试在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语句如何实现?
谢谢!
您可以使用match
获得的指数startd
,并endd
获得相应xvar
核减他们:
library(dplyr)
dataA %>%
mutate(vardiff = xvar[match(endd, date)] - xvar[match(startd, date)])
也可以使用R在base R中编写transform
:
transform(dataA, vardiff = xvar[match(endd, date)] - xvar[match(startd, date)])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句