我有一个不平衡的面板数据,我想操纵它以包含一些先验信息。为此,我需要做一些由数据帧时间维度决定的数据操作。原始数据看起来像这样:
FIRM_ID YEAR CAP_START CAP_END
OBS1 1 2000 CAP_S_2000 CAP_E_2000
OBS2 1 2001 CAP_S_2001 CAP_E_2001
OBS3 1 2002 NA NA
我知道行OBS3上的CAP_START将等于上一年的CAP_END。如何在数据中包含此先验信息?
答案 0 :(得分:1)
如果您的数据已经排序(最好是character
格式,factor
可能会导致级别问题),那么您可以使用类似的内容
#add preceding row cap_end entry:
dt$prev_CAP_END <- c(NA,head(dt$CAP_END,-1))
#wherever missing, update with prevcap_end
dt[which(is.na(dt$CAP_START)),"CAP_START"] <- dt[which(is.na(dt$CAP_START)),"prev_CAP_END"]