如何解决区分两个日期之间的变量
我正在尝试在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)])
,
您可以使用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)])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。