我试图计算一个人在一年中与其他人一起工作的年数(即,一个人与他/她的同事的共同工作经验)。我的数据看起来像下面:
mydata <- data.frame(group_id= c(1,1,1,1,1,1,2,2),
individual_id= c(1,2,3,1,2,4,5,6),
working_since= c(2000,2005,1998,2000,2005,2009,2005,1990),
current_year= c(2008,2008,2008,2009,2009,2009,2008,2008)
)
可以看出,属于一个群体的个人数量随着时间的推移而变化,这取决于他们的工作决定;
因为我感兴趣的是计算一个人与她在同一个小组中的同事直到给定年份的共同工作经历(var =当前+年份),所以将对给定年份中一个小组中的所有行进行逐区比较。预期的输出如下所示:
mydata <- data.frame(group_id= c(1,1,1,1,1,1,2,2),
individual_id= c(1,2,3,1,2,4,5,6),
working_since= c(2000,2005,1998,2000,2005,2009,2005,1990),
current_year= c(2008,2008,2008,2009,2009,2009,2008,2008),
overlapping_years_caculation= c("4+9", "4+4", "9+4", "5+1", "6+1", "1+1", "4" "4")
overlapping+years+result = c(13, 8, 13, 6, 7, 2, 4, 4)
)
结果假设个人在年初开始她的任期。
我一直在进行广泛的搜索,看看是否有任何过去的职位类似于我的问题,事实上,我发现它比较一列的一行对所有其他的组。不幸的是,那篇文章中提供的代码在我的数据集上不起作用--也许是因为我有单独的开始和结束年份的列?
如果我能得到一些帮助,我将不胜感激。
2条答案
按热度按时间lokaqttq1#
只是从你链接的答案中提取代码,并将其调整为适合你的问题。
library(lubridate)
yeotifhr2#
我有一个稍微不同的方法,
full_join
按组/年计算所有个体,以获得groupXyear匹配的完整列表: