在R中为面板数据创建对过去几年敏感的虚拟变量

时间:2018-08-04 10:31:43

标签: r variables time-series panel

所以从本质上讲,我一直在寻找在R中创建一个变量(简称为historyD)的情况,如果当前年份的面板数据中的另一个虚拟变量(称为currentD)的值= 1,则为= 1,如果currentD为= 1,则== 1 == 1,适用于每个参与者过去的任何年份。棘手的部分是我的数据按参与者和降序排列,所以我希望它看起来像这样:

data view

很难将代码与每个参与者匹配,因此historyD依赖于每个参与者特定的当年和过去一年的currentD。到目前为止,进展甚微。

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果确实您的数据按参与者的升序排列,然后按的DESCENDING降序排列,则首先您可以按参与者的升序 em>,然后按年份

升序顺序
# creation of dataframe
Participant <- factor(rep(c(1,2,3), each = 4))
Year <- rep(c(4,3,2,1), 3) #descending order of the years
currentD <- c(0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1) #data rearranged to fit your data
DF <- data.frame(Participant, Year, currentD)

# reorder the DF with participant and year in ascending order
DF <- DF[  with(DF, order(Participant, Year)),   ]

# cumulative sum by group of *Participant*
DF$historyD <- unlist(by(DF$currentD, DF$Participant, cumsum))

# All numbers higher than 1 are reset to 1
DF[DF$historyD >1, "historyD"] <- 1