【问题标题】:Getting Cumulative Sum Over Time随着时间的推移获得累积和
【发布时间】:2019-09-11 02:37:27
【问题描述】:

我有每个赛季每个球员的进球数据:

playerID <- c(1,2,3,1,2,3,1,2,3,1,2,3)
year <- c(2002,2000,2000,2003,2001,2001,2000,2002,2002,2001,2003,2003)
goals <- c(25,21,27,31,39,34,42,44,46,59,55,53)
my_data <- data.frame(playerID, year, goals)

我想绘制每个球员的累计进球数随时间的变化:

ggplot(my_data, aes(x=year, y=cumsum_goals, group=playerID)) + geom_line()

我曾尝试使用dplyr 中的summarize,但这仅适用于数据已按year 排序的情况(参见播放器1):

new_data <- my_data %>%
  group_by(playerID) %>%
  mutate(cumsum_goals=cumsum(goals))

有没有办法让这段代码对年份不按时间顺序排列的数据具有鲁棒性?

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    我们可以通过playerIDyear arrange,取cumsum 然后绘图

    library(dplyr)
    library(ggplot2)
    
    my_data %>%
      arrange(playerID, year) %>%
      group_by(playerID) %>%
      mutate(cumsum_goals=cumsum(goals)) %>%
      ggplot() + aes(x=year, y= cumsum_goals, color = factor(playerID)) + geom_line()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 2021-06-21
      相关资源
      最近更新 更多