【发布时间】:2020-06-19 10:03:24
【问题描述】:
我想根据索引和分组来总结一个值。 这是我的玩具数据集:
vals<- 1:5
grps <- c(1,1,2,2,2)
dts <- as.Date(c("2020-01-01","2020-01-02","2020-01-03","2020-01-04","2020-01-05"))
dfx <- as_tibble(cbind(vals,grps,dts))
colnames(dfx) <- c("vals","grps","dts")
(rslt <- dfx %>%
mutate(dts = as.Date(dts)) %>%
arrange(dts) %>%
group_by(grps) %>%
mutate(dist = as.numeric(last(dts) - dts)))
生成的 df 如下所示:
vals grps dts dist
<dbl> <dbl> <date> <dbl>
1 1 1 2020-01-01 1
2 2 1 2020-01-02 0
3 3 2 2020-01-03 2
4 4 2 2020-01-04 1
5 5 2 2020-01-05 0
我想为每一行获取一个新变量(例如通过 mutate()),它是每个组 (grps) 中所有日期的摘要行小于或等于索引中给定的值 (dist)。 换句话说,我想在某个截止日期之前获取每个每日间隔的值 (vals) 的摘要,同时合并分组。
所以我想要的最终结果将是我的 df (sum) 中的一列:
# A tibble: 5 x 5
# Groups: grps [2]
vals grps dts dist sum
<dbl> <dbl> <date> <dbl> <dbl>
1 1 1 2020-01-01 1 3
2 2 1 2020-01-02 0 2
3 3 2 2020-01-03 2 12
4 4 2 2020-01-04 1 9
5 5 2 2020-01-05 0 5
【问题讨论】: