【问题标题】:Expand Time-Series Data in R在 R 中展开时间序列数据
【发布时间】:2020-03-06 18:28:31
【问题描述】:

我有一个 NHL 球员数据集,其中包括每个球员在每个赛季的进球数。我计算了球员职业生涯中的总进球数,以确定“跑步”前 10 名球员。

toy_data <- data.frame(player=c("gretzky","gretzky","gretzky","gretzky","gretzky","gretzky","gretzky","gretzky","gretzky","gretzky"),
                       goal_total=c(5,10,15,20,25,30,35,40,45,50),
                       goals=c(5,5,5,5,5,5,5,5,5,5),
                       year=c(1990,1991,1992,1993,1994,1995,1996,1997,1998,1999))

player goal_total goals year
1  gretzky          5     5 1990
2  gretzky         10     5 1991
3  gretzky         15     5 1992
4  gretzky         20     5 1993
5  gretzky         25     5 1994
6  gretzky         30     5 1995
7  gretzky         35     5 1996
8  gretzky         40     5 1997
9  gretzky         45     5 1998
10 gretzky         50     5 1999

我想扩展数据集,以便当球员结束职业生涯时,他们仍保留在数据集中。例如,Wayne Gretzky 于 1999 年退休,但我希望在数据集中为 Gretzky 输入所有后续年份的最终目标总数。最终产品看起来像这样:

player goal_total goals year
1  gretzky          5     5 1990
2  gretzky         10     5 1991
3  gretzky         15     5 1992
4  gretzky         20     5 1993
5  gretzky         25     5 1994
6  gretzky         30     5 1995
7  gretzky         35     5 1996
8  gretzky         40     5 1997
9  gretzky         45     5 1998
10 gretzky         50     5 1999
11 gretzky         50     0 2000
12 gretzky         50     0 2001
13 gretzky         50     0 2002
...

等到 2019 年。有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用来自tidyrcompletefill 来实现这一点

    library(dplyr)
    library(tidyr)
    
    toy_data %>%
      group_by(player) %>%
      complete(year = min(year):2019, fill = list(goals = 0)) %>%
      fill(goal_total) 
    
    
    #    player year goal_total goals
    #1  gretzky 1990          5     5
    #2  gretzky 1991         10     5
    #3  gretzky 1992         15     5
    #4  gretzky 1993         20     5
    #5  gretzky 1994         25     5
    #6  gretzky 1995         30     5
    #7  gretzky 1996         35     5
    #8  gretzky 1997         40     5
    #9  gretzky 1998         45     5
    #10 gretzky 1999         50     5
    #11 gretzky 2000         50     0
    #12 gretzky 2001         50     0
    #....
    

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 2020-11-24
      • 2015-04-13
      • 2014-03-02
      • 2021-10-30
      • 2013-03-10
      • 2018-12-07
      • 1970-01-01
      相关资源
      最近更新 更多