A function that correctly lags panel data where units are identified by id and time periods are identified with t. Results are in same order as data and are padded with NA as needed.

panel_lag(x, id, t, lag = 1, data = NULL)

Arguments

x

String identifying the vectors to be lagged in data.

id

String identifying the unit (e.g. country) identifier in data.

t

String identifying the time identifier in data.

lag

Lag order, i.e. by how many time periods should x be lagged? Unlike the default lag, positive values indicate that past data is used for the current time period.

data

A data frame. If not provided, a new one will be constructed with the vectors supplied for the other parameters.

Value

A vector of same length as x representing lagged values with leading NA's.

Examples

data(coups) # No need to order before using panelLag, just do it here so we can compare results below. coups <- coups[order(coups$gwcode, coups$year), ] test <- panel_lag("polity2", "gwcode", "year", data=coups) # Compare output head(coups$polity2)
#> [1] 10 10 10 10 10 10
head(test)
#> [1] NA 10 10 10 10 10