区分两个日期之间的变量

JFD

我正在尝试在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章