агрегировать по прошлым датам (12 месяцев) в R - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь обобщить / агрегировать данные по дате.Для простоты мне нужно сделать это только для строки 4 в следующем примере данных.Например, в строке 4 указана дата «2014-06-06» (июнь 2014 г.), поэтому я хочу суммировать цену и НДС (по Group_ID) для всех дат за последние 12 месяцев, то есть между 2013-06-01 и 2014 гг.-05-31 (т. Е. Сумма строки 1,2,3,6).

 Date       Price    Vat    Group_ID
 2014-01-10   705000  5023.00   A      
 2014-05-11   580000  6786.00   A       
 2014-05-19   333000  1809.84   A    
 2014-06-06   213000  1875.00   A (need result for this row only)     
 2014-06-21   310000  1905.96   B    
 2013-06-30   280000  3227.00   A
 2014-06-22   280000  3227.00   B
 2014-06-16   280000  3227.00   B
 2014-06-15   280000  3227.00   B
 2013-05-18   280000  3227.00   A    

Ожидаемый результат для строки 4 будет:

Date         S_Price   S_Vat      Group_ID
2014-06-06   1898000  16845.84     A  

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете использовать lubridate и между ними для создания групп с целевыми датами, а затем суммировать фрейм данных.Вот мое решение:

library(tidyverse)
library(lubridate)

df_2 <- df %>%
    mutate(target_date = case_when(
        between(Date,ymd("2013-06-01"),ymd("2014-05-31")) ~"2014-06-06",
        TRUE ~"0"
    )) %>%
    group_by(target_date, Group_ID) %>%
    summarise(S_price = sum(Price),
              S_Vat = sum(Vat)) %>%
    filter(target_date == "2014-06-06")

df_2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...