Суммирование строк по месяцам по годам в R - PullRequest
0 голосов
/ 05 августа 2020

Суммирование строк по месяцам в R

Итак, я использовал этот пост, чтобы суммировать мои данные по месяцам в R, но проблема в том, что мои данные хранятся за несколько лет. Текущее решение будет рассматривать, скажем, январь 2018 и январь 2019 как один и тот же месяц. Есть ли способ разделить их по месяцам с помощью функций aggregate () и month ()? Или мне придется изменить свой подход?

Мой фрейм данных выглядит так:

           Day           Sales
    1      2019-02-04    219.12        
    2      2019-02-04    60.84
    3      2019-02-05    200.27
    4      2020-02-11    157.17
    5      2020-02-12    12.14

А моя функция выглядит так:

bymonth<-aggregate(sales~month(day,label=TRUE),data=total.orders.by.date,FUN=sum)

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Вы можете попробовать это:

library(tidyverse)
library(lubridate)
#Data
total.orders.by.date <- structure(list(Day = structure(c(17931, 17931, 17932, 18303, 
18304), class = "Date"), Sales = c(219.12, 60.84, 200.27, 157.17, 
12.14)), row.names = c("1", "2", "3", "4", "5"), class = "data.frame")

#Code
total.orders.by.date %>% mutate(Month=month(Day,label = T),Year=year(Day)) %>%
  group_by(Year,Month) %>% summarise(Sales=sum(Sales,na.rm=T))

Вывод:

# A tibble: 2 x 3
# Groups:   Year [2]
   Year Month Sales
  <dbl> <ord> <dbl>
1  2019 Feb    480.
2  2020 Feb    169.
0 голосов
/ 05 августа 2020

Вот пример использования lubridate библиотеки

library(tidyverse)
library(lubridate)
result<-data.frame(Date=as.Date(c("18/12/2013", "12/12/2019", "15/8/2017", "09/08/2018"), format = "%d/%m/%Y"), Item = c(8002, 8004, 8001, 8002), result=c(21.45, 5.35, 35.99, 20.83)) 
result_2 <- result %>% 
  mutate(Month_only = month(Date)) %>% 
  group_by(Month_only) %>% 
  filter(between(Month_only, 1, 12)) %>% 
  summarise(total = sum(result, rm.na =TRUE))

#     Month_only total
#         <dbl> <dbl>
# 1          8  56.8
# 2         12  26.8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...