【发布时间】:2020-02-03 21:21:28
【问题描述】:
我想构造一个“累积和”,计算一组中在相关观察开始之前已经结束的观察数量。
我更喜欢使用 dplyr 的答案,但优先考虑低内存开销,因为这是一个巨大的数据集。
MWE 下面,我要创建的变量称为“prior_ended_obs”。
mwe <- data.frame(group = c("a", "a", "a", "a", "a", "a", "a", "a", "a", "b", "b", "b"),
start = c("1/1/1990", "1/2/1990", "1/3/1990", "1/3/1990", "1/3/1990", "1/4/1990", "1/5/1990", "1/6/1990", "1/7/1990", "1/1/1990", "1/2/1990", "1/3/1990"),
end = c("1/2/1990", "1/2/1990", "1/3/1990", "1/4/1990", "1/5/1990", "1/5/1990", "1/5/1990", "1/6/1990", "1/8/1990", "1/1/1990", "1/2/1990", "1/3/1990"),
prior_ended_obs = c(0, 0, 2, 2, 2, 3, 4, 7, 8, 0, 1, 2)) %>%
mutate(start = mdy(start),
end = mdy(end)) %>%
group_by(group) %>%
mutate(lag_end = lag(end),
ones = 1,
cumsum = cumsum(ones)-1)
【问题讨论】:
-
抱歉,我不明白您要做什么。我想我被困在“计算在这个开始之前已经结束的一组观察的数量”部分。不确定“这个”是什么意思,或者当这么多行有重叠日期时如何确定顺序。你能澄清一下吗?
-
正如@ulfelder 提到的,这有点令人困惑。能否请您提供更多描述
-
@GoGonzo 你能用 mwe 来解释 sum_run 是如何工作的吗?