umulative Summe mit Verzögeru

Ich habe einen sehr großen Datensatz, der so vereinfacht aussieht:

row.    member_id   entry_id    comment_count   timestamp
1       1            a              4           2008-06-09 12:41:00
2       1            b              1           2008-07-14 18:41:00
3       1            c              3           2008-07-17 15:40:00
4       2            d              12          2008-06-09 12:41:00
5       2            e              50          2008-09-18 10:22:00
6       3            f              0           2008-10-03 13:36:00

Ich kann die Anzahl mit dem folgenden Code zusammenfassen:

transform(df, aggregated_count = ave(comment_count, member_id, FUN = cumsum))

Aber ich möchte eine Verzögerung von 1 in den kumulierten Daten, oder ich möchtecumsum, um die aktuelle Zeile zu ignorieren. Das Ergebnis sollte lauten:

row.    member_id   entry_id     comment_count  timestamp             previous_comments
1       1            a              4           2008-06-09 12:41:00        0
2       1            b              1           2008-07-14 18:41:00        4
3       1            c              3           2008-07-17 15:40:00        5
4       2            d              12          2008-06-09 12:41:00        0
5       2            e              50          2008-09-18 10:22:00        12
6       3            f              0           2008-10-03 13:36:00        0

Eine Idee, wie ich das in R machen kann? Vielleicht sogar mit einer Verzögerung größer als 1?

Daten zur Reproduzierbarkeit:

# dput(df)
structure(list(member_id = c(1L, 1L, 1L, 2L, 2L, 3L), entry_id = c("a", 
"b", "c", "d", "e", "f"), comment_count = c(4L, 1L, 3L, 12L, 
50L, 0L), timestamp = c("2008-06-09 12:41:00", "2008-07-14 18:41:00", 
"2008-07-17 15:40:00", "2008-06-09 12:41:00", "2008-09-18 10:22:00", 
"2008-10-03 13:36:00")), .Names = c("member_id", "entry_id", 
"comment_count", "timestamp"), row.names = c("1", "2", "3", "4", 
"5", "6"), class = "data.frame")

Antworten auf die Frage(6)

Ihre Antwort auf die Frage