# NOT RUN {
# simple example with an unbalanced panel
base = data.frame(id = rep(1:2, each = 4),
time = c(1, 2, 3, 4, 1, 4, 6, 9), x = 1:8)
lag(x~id+time, 1, base) # lag 1
lag(x~id+time, -1, base) # lead 1
lag(x~id+time, 2, base, fill = 0)
# with time.step = "consecutive"
lag(x~id+time, 1, base, time.step = "cons")
# => works for indiv. 2 because 9 (resp. 6) is consecutive to 6 (resp. 4)
# mostly useful when the time variable is not a number:
# e.g. c("1991q1", "1991q2", "1991q3") etc
# with duplicates
base_dup = data.frame(id = rep(1:2, each = 4),
time = c(1, 1, 1, 2, 1, 2, 2, 3), x = 1:8)
# by default: error
# }
# NOT RUN {
lag(x~id+time, 1, base_dup)
# }
# NOT RUN {
# with duplicate.method = "first"
lag(x~id+time, 1, base_dup, duplicate.method = "first")
# }
# NOT RUN {
# You can create variables without specifying the data within data.table:
library(data.table)
base = data.table(id = rep(1:2, each = 3), year = 1990 + rep(1:3, 2), x = 1:6)
base[, x.l1 := lag(x~id+year, 1)]
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab