【发布时间】:2020-05-15 15:39:30
【问题描述】:
我有一个如下数据框:
Date Flare Painmed_Use
1 2015-12-01 0 0
2 2015-12-02 0 0
3 2015-12-03 0 0
4 2015-12-04 0 0
5 2015-12-05 0 0
6 2015-12-06 0 1
7 2015-12-07 1 4
8 2015-12-08 1 3
9 2015-12-09 1 1
10 2015-12-10 1 0
11 2015-12-11 0 0
12 2015-12-12 0 0
13 2015-12-13 1 2
14 2015-12-14 1 3
15 2015-12-15 1 1
16 2015-12-16 0 0
我正在尝试使用 dplyr 查找每个耀斑的长度以及每次耀斑期间的总药物使用量。我目前的解决方案(灵感来自Use rle to group by runs when using dplyr),
df %>%
group_by(yy = {yy = rle(Flare); rep(seq_along(yy$lengths), yy$lengths)}, Flare) %>%
summarize(Painmed_UseCum = sum(Painmed_Use),FlareLength = n())
给出以下输出:
yy Flare Painmed_UseCum FlareLength
<int> <int> <dbl> <int>
1 1 0 1 6
2 2 1 8 4
3 3 0 0 2
4 4 1 6 3
5 5 0 0 1
这几乎正是我所需要的。但是,我不知道如何保留其他列,关键是与特定耀斑的最后一行相对应的日期。所以,我正在寻找的输出与上面相同,但添加了日期,如下所示:
Date yy Flare Painmed_UseCum FlareLength
<int> <int> <dbl> <int>
1 2015-12-06 1 0 1 6
2 2015-12-10 2 1 8 4
3 2015-12-12 3 0 0 2
4 2015-12-15 4 1 6 3
5 2015-12-16 5 0 0 1
注意:在某些方面,这是我上一个问题 (R code to get max count of time series data by group) 的后续问题,但我试图让这个问题更简单,虽然可能对其他人有用,但最终需要这个进一步的问题。
【问题讨论】:
标签: r dplyr time-series summarize preserve