Мои данные выглядят так:
library(tidyverse)
Date <- c(rep("5/22/19", 3), rep("5/23/19", 3), rep("5/24/19", 3))
Source <- rep(c("Control", "A", "B"), 3)
ValueA <- c(12080, 12012, 11944, 13345, 13342, 13422, 16226, 16045, 16221)
ValueB <- c(11, 9, 13, 11, 9, 7, 12, 9, 15)
df <- tibble(Date, Source, ValueA, ValueB)
df
# A tibble: 9 x 4
Date Source ValueA ValueB
<chr> <chr> <dbl> <dbl>
1 5/22/19 Control 12080 11
2 5/22/19 A 12012 9
3 5/22/19 B 11944 13
4 5/23/19 Control 13345 11
5 5/23/19 A 13342 9
6 5/23/19 B 13422 7
7 5/24/19 Control 16226 12
8 5/24/19 A 16045 9
9 5/24/19 B 16221 15
То, что я хочу, это кумулятивные суммы как Date
, так и Source
. Таким образом, результат будет выглядеть так:
Date Source ValueA ValueB
1 5/22/19 Control 12080 11
2 5/22/19 A 12012 9
3 5/22/19 B 11944 13
4 5/23/19 Control 25425 22
5 5/23/19 A 25354 18
6 5/23/19 B 25366 20
7 5/24/19 Control 41651 34
8 5/24/19 A 41399 27
9 5/24/19 B 41587 35
Однако, когда я использую этот код:
df <- df %>%
group_by(Date, Source) %>%
summarize(
ValueA = sum(ValueA, na.rm = TRUE),
ValueB = sum(ValueB, na.rm = TRUE),
Cum_A = cumsum(ValueA, na.rm = TRUE),
Cum_B = cumsum(ValueB, na.rm = TRUE)
)
Я получаю ошибку
Error in cumsum(ValueA, na.rm = TRUE) :
2 arguments passed to 'cumsum' which requires 1
Я предполагаю, что функция cumsum
не предназначена для обработки нескольких группирующих переменных. Так как же получить желаемый результат?