Суммируя значения до даты изменения [дубликат]

fabi96 спросил: 12 мая 2018 в 04:51 в: r

У этого вопроса уже есть ответ:

  • How to sum a variable by group? 10 ответов

Я хотел бы суммировать числа в одном столбце, если у них одинаковая дата, связанная с ними. Проблема в том, что даты не меняются на регулярной основе. Например, мой набор данных будет выглядеть так:

Date          Amount          
12/15/2016   2300
12/15/2016   2300
12/15/2016   2300
12/15/2016   2300
12/15/2016   2300
12/15/2016   2300 
12/15/2016   2300
12/15/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/19/2016   2300
12/06/2016   2300 
12/06/2016   2300 
12/06/2016   2300 
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300
12/06/2016   2300

Фактические суммы все разные. Выходные данные должны быть суммированы в одном столбце, а соответствующие даты - в другом. Я думал об использовании group_by или цикла for, но я застрял с обоими из них, так как я довольно новичок в R. Нашел несколько похожих вопросов, но не смог найти ответа на мой вопрос. Любая помощь очень ценится.

1 ответ

Есть решение
Calum You ответил: 12 мая 2018 в 04:59
library(tidyverse)
df <- structure(list(Date = c("12/15/2016", "12/15/2016", "12/15/2016", "12/15/2016", "12/15/2016", "12/15/2016", "12/15/2016", "12/15/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/19/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016", "12/06/2016"), Amount = c(2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L, 2300L)), row.names = c(NA, -31L), class = c("tbl_df", "tbl", "data.frame"), spec = structure(list(cols = list(Date = structure(list(), class = c("collector_character", "collector")), Amount = structure(list(), class = c("collector_integer", "collector"))), default = structure(list(), class = c("collector_guess", "collector"))), class = "col_spec"))df %>%
  group_by(Date) %>%
  summarise(amount_sum = sum(Amount))
#> # A tibble: 3 x 2
#>   Date       amount_sum
#>   <chr>           <int>
#> 1 12/06/2016      27600
#> 2 12/15/2016      18400
#> 3 12/19/2016      25300

Создано в 2018-06-05 пакетом reprex (v0.2.0).