我有这个数据框,其中包含“Person”、“NoShow”和“date”列。:
df <- data.frame(Person = c('334','334','334','334','334','334','334','334','334'),
NoShow = c(1,1,1,0,1,1,0,1,0),
date = c('2014-01-01','2016-06-01','2017-01-01','2018-05-01','2021-01-01','2021-06-03','2022-04-14','2022-04-14','2023-05-03')
)
要创建一个变量来计算当前日期两年内未出现的次数,我运行以下代码:
library(lubridate); library(dplyr); library(slider)
df %>%
mutate(date = ymd(date)) %>%
group_by(Person) %>%
arrange(Person, date) %>% # slider unfortunately requires dates be sorted
mutate(no_shows_next2yr = slide_index_dbl(
NoShow, date, sum, .before = days(-1), .after = years(2)
))
这在这个假数据集中工作得很好。当我尝试在我的真实数据上应用完全相同的代码(具有完全相同的变量)时,我收到此错误消息:
Error in `mutate()`:
! Problem while computing `no_shows_next2yr = slider::slide_index_dbl(...)`.
ℹ The error occurred in group 2326: Person = "456".
Caused by error in `slider::slide_index_dbl()`:
ℹ In locations: 5
! Endpoints generated by `.after` must be in ascending order.
我检查了错误消息中的人员 ID (456),但我无法弄清楚为什么这不起作用。变量“Person”和“date”均按升序排列。