Generating a moving sum variable in R

后端 未结 3 1999
盖世英雄少女心
盖世英雄少女心 2021-02-09 07:16

I suspect this is a somewhat simple question with multiple solutions, but I\'m still a bit of a novice in R and an exhaustive search didn\'t yield answers that spoke well to wha

3条回答
  •  孤独总比滥情好
    2021-02-09 07:57

    You can use filter in ddply (or any other function implementing the "split-apply-combine" approach):

    library(plyr)
    ddply(DF, .(country), transform, 
              x5yrsum2 = as.numeric(filter(x,c(0,rep(1,5)),sides=1)))
    
    #    country year x x5yrsum x5yrsum2
    # 1        A 1980 9      NA       NA
    # 2        A 1981 3      NA       NA
    # 3        A 1982 5      NA       NA
    # 4        A 1983 6      NA       NA
    # 5        A 1984 9      NA       NA
    # 6        A 1985 7      32       32
    # 7        A 1986 9      30       30
    # 8        A 1987 4      36       36
    # 9        B 1990 0      NA       NA
    # 10       B 1991 4      NA       NA
    # 11       B 1992 2      NA       NA
    # 12       B 1993 6      NA       NA
    # 13       B 1994 3      NA       NA
    # 14       B 1995 7      15       15
    # 15       B 1996 0      22       22
    

提交回复
热议问题