【发布时间】:2026-01-17 08:55:01
【问题描述】:
我有关于咒语的开始和结束日期的数据,按人员标识符。
temp <- structure(list(id = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("1",
"2"), class = "factor"), spell = c(1L, 2L, 3L, 1L, 2L, 3L), date1 = structure(c(14611,
14654, 15141, 14853, 14867, 14975), class = "Date"), date2 = structure(c(14612,
14656, 15142, 14862, 14872, 14976), class = "Date")), class = "data.frame", .Names = c("id",
"spell", "date1", "date2"), row.names = c(NA, -6L))
我想计算过去一年内咒语的滚动总天数(由 365 天窗口定义),以便每一行获得当前咒语之前包含在咒语中的总天数, 一年内。
所以在我的示例中,人 1 有 3 个法术,其中两个发生在一年的窗口内(第 1 行和第 2 行)。第一个法术没有先验,因此 days.observed.in.past.yr 为 0。第二个法术(第 1 行)具有 1 天的长度,因此 days.observed.in.past.yr 为 0。
第 2 个人有三个咒语,都发生在一年内。对于咒语 2,人 2,前一个咒语是 9 天,因此 days.observed.in.past.yr 是 9。然后对于咒语 3,有两个前咒语,days.observed.in.past.yr 是 14 (9+5)。这将继续为当前行的 365 天窗口内添加尽可能多的法术。
id spell date1 date2 days.observed.in.past.yr
1 1 2010-01-02 2010-01-03 0
1 2 2010-02-14 2010-02-16 1
1 3 2011-06-16 2011-06-17 0
2 1 2010-09-01 2010-09-10 0
2 2 2010-09-15 2010-09-20 9
2 3 2011-01-01 2011-01-02 14
但是,除了计算拼写长度和一年前的日期等琐碎的事情之外,我不知道该怎么做。我发现的最接近的类似问题是rgolf:rolling window,但我不知道如何将其应用于我的问题。
谁能帮忙?
【问题讨论】:
标签: r