I have a data frame containing number of page views per user, per week. I want to determine, for each user, whether their views increased, decreased, or stayed the same after a
Since version v1.9.6 (on CRAN 19 Sep 2015), the shift()
function is available in data.table
:
DT[, difference := shift(numviews, type = "lead") - numviews, by = Userid][
xeventinweek != 0L]
Userid week xeventinweek numviews difference 1: Alice 1 2 5 -2 2: Alice 4 1 6 NA 3: Bob 2 2 3 2
Using match
:
dat[, numnextweek := numviews[match(week + 1, week)] , by=Userid]
dat[, difference := numviews - numnextweek , by=Userid]
dat[xeventinweek != 0]
# Userid week xeventinweek numviews numnextweek difference
#1: Alice 1 2 5 3 2
#2: Alice 4 1 6 NA NA
#3: Bob 2 2 3 5 -2