【发布时间】:2021-04-16 08:53:42
【问题描述】:
我想计算不是NA 的每 3 个值的总和。
我希望我可以用以下示例数据框解释我的问题:
library(tidyverse)
df <- tibble(
date = lubridate::today() +0:19,
value= c(1,2.5,2,NA,NA,6.5,1,9,3,8,4,7,NA,NA,NA,1,5,3,6,7))
> df
# A tibble: 20 x 2
date value
<date> <dbl>
1 2021-04-16 1
2 2021-04-17 2.5
3 2021-04-18 2
4 2021-04-19 NA
5 2021-04-20 NA
6 2021-04-21 6.5
7 2021-04-22 1
8 2021-04-23 9
9 2021-04-24 3
10 2021-04-25 8
11 2021-04-26 4
12 2021-04-27 7
13 2021-04-28 NA
14 2021-04-29 NA
15 2021-04-30 NA
16 2021-05-01 1
17 2021-05-02 5
18 2021-05-03 3
19 2021-05-04 6
20 2021-05-05 7
我首先需要一个索引,它可以帮助我更详细地解释我的请求:
df$index<-c(1,1,1,NA,NA,2,2,2,3,3,3,4,NA,NA,NA,4,4,5,5,5)
我希望每 3 行不是NA 进行分组。为此,创建了index-列。然后我想计算该组最后一行中 3 个分组值的总和:
df$cumsum<-c(NA,NA,5.5,NA,NA,NA,NA,16.5,NA,NA,15,NA,NA,NA,NA,NA,13,NA,NA,16)
我的最终数据框应如下所示:
# A tibble: 20 x 4
date value index cumsum
<date> <dbl> <dbl> <dbl>
1 2021-04-16 1 1 NA
2 2021-04-17 2.5 1 NA
3 2021-04-18 2 1 5.5
4 2021-04-19 NA NA NA
5 2021-04-20 NA NA NA
6 2021-04-21 6.5 2 NA
7 2021-04-22 1 2 NA
8 2021-04-23 9 2 16.5
9 2021-04-24 3 3 NA
10 2021-04-25 8 3 NA
11 2021-04-26 4 3 15
12 2021-04-27 7 4 NA
13 2021-04-28 NA NA NA
14 2021-04-29 NA NA NA
15 2021-04-30 NA NA NA
16 2021-05-01 1 4 NA
17 2021-05-02 5 4 13
18 2021-05-03 3 5 NA
19 2021-05-04 6 5 NA
20 2021-05-05 7 5 16
有人可以帮我解决问题吗?
非常感谢!
【问题讨论】:
标签: r