Показать совокупную сумму по годам в R - PullRequest
0 голосов
/ 13 июня 2018

У меня есть данные, которые выглядят следующим образом.

Month_Yr revenue year mo
2016-01    1200  2016 01
2016-02    7826  2016 02
2016-03   11892  2016 03
2016-05   11376  2016 05
2016-06    9055  2016 06
2016-07    5000  2016 07

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

Month_Yr revenue year mo cumsum
2016-01    1200  2016 01 1200 
2016-02    7826  2016 02 9026
2016-03   11892  2016 03 20918
2016-05   11376  2016 05 32294
2016-06    9055  2016 06 41349
2016-07    5000  2016 07 46349

Эти данные распространяются на 2018 год, и некоторые месяцы (например, апрель 2016 года) не имеют значений, поэтому они исключаются.Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 июня 2018
library(tidyverse)
df%>%
separate(Month_Yr,c("year","month"),remove = F)%>%
group_by(year)%>%
mutate(cumsum=cumsum(Revenue))

в базе R вы можете сделать

transform(df,year=y<-sub("-.*","",Month_Yr),
          month=sub(".*-","",Month_Yr),revenue=ave(Revenue,y,FUN=cumsum))
0 голосов
/ 13 июня 2018

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

library(dplyr)
df <- data.frame("Month_Yr" = c("2016-01","2016-02","2016-03","2016-05","2016-06","2016-07","2017-01","2017-02","2017-03","2017-05","2017-06","2017-07","2018-01","2018-02","2018-03","2018-05","2018-06","2018-07"), "Revenue" = c(1200,7826,11892,11376,9055,5000))
df$year <- substr(df$Month_Yr,0,4)
df$mo <- substr(df$Month_Yr,6,7)

df <- df %>%
  arrange(year,mo) %>%
  group_by(year) %>%
  mutate(cumsum = cumsum(Revenue))

Обновлен ответ.

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