所以从本质上讲,我一直在寻找在R中创建一个变量(简称为historyD)的情况,如果当前年份的面板数据中的另一个虚拟变量(称为currentD)的值= 1,则为= 1,如果currentD为= 1,则== 1 == 1,适用于每个参与者过去的任何年份。棘手的部分是我的数据按参与者和降序排列,所以我希望它看起来像这样:
很难将代码与每个参与者匹配,因此historyD依赖于每个参与者特定的当年和过去一年的currentD。到目前为止,进展甚微。
任何帮助将不胜感激。
谢谢。
答案 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