calculating sum of previous 3 rows in R data.table (by grid-square)

前端 未结 6 1450
一生所求
一生所求 2020-12-03 23:32

I would like to calculate the rainfall that has fallen over the last three days for each grid square, and add this as a new column in my data.table. To be clear, I want to s

6条回答
  •  情话喂你
    2020-12-04 00:11

    Here's a quick and efficient solution using the latest data.table version (v 1.9.6+)

    weather[, rain_3 := Reduce(`+`, shift(rain, 0:2)), by = square]
    weather
    #     rain square desired_result rain_3
    #  1:   NA      1             NA     NA
    #  2:   NA      1             NA     NA
    #  3:   NA      1             NA     NA
    #  4:    0      1             NA     NA
    #  5:    0      1             NA     NA
    #  6:    5      1              5      5
    #  7:    1      1              6      6
    #  8:    0      1              6      6
    #  9:    3      1              4      4
    # 10:   10      2             NA     NA
    

    The basic idea here is to shift the rain column twice and then sum up the rows.

提交回复
热议问题