我有一个如下所示的数据(真正的数据有更多的人):
Year Person Office
2005 Lauren Boston
2007 Lauren Boston
2008 Lauren Chicago
2010 Lauren Boston
2012 Lauren New York
2013 Lauren New York
2007 Kate Atlanta
2009 Kate Atlanta我想要计算一个办公室人员级别的度量(计数),它捕获了一个人在进入当前职位之前所经历的办公室的加权数。公司名称:^2+(前一年工作经验长度)^2+.
以下是理想的输出。对劳伦来说,波士顿是她的第一间办公室。因此,她的波士顿数是0。对于劳伦来说,芝加哥是她的第二个办公室,她在来芝加哥办公室之前花了3年的时间。因此,她的芝加哥数是(3/3)^2=1。然后,劳伦第二次回到波士顿。在这里,她有过两次经历(波士顿3年,芝加哥2年(2010-2008年))。因此,她的第二次波士顿体验是(3/5)^2+(2/5)^2=0.52。
Office Person Count
Boston Lauren 0
Chicago Lauren 1
Boston Lauren 0.52
New York Lauren 0.3469
Atlanta Kate 0发布于 2022-04-28 19:21:06
您可以使用类似于this question的类似方法
library(dplyr)
df %>%
group_by(Person, Office, grp = cumsum(coalesce(Office != lag(Office), TRUE))) %>%
slice(1) %>%
arrange(Year) %>%
group_by(Person) %>%
mutate(
tmp_cnt = if_else(
row_number() == 1,
0,
(Year - lag(Year))^2
),
Count = if_else((Year - first(Year))^2 == 0, 0, cumsum(tmp_cnt) / (Year - first(Year))^2)
) %>%
select(-grp, -tmp_cnt) %>%
ungroup()这会返回
# A tibble: 5 x 4
Year Person Office Count
<dbl> <chr> <chr> <dbl>
1 2005 Lauren Boston 0
2 2007 Kate Atlanta 0
3 2008 Lauren Chicago 1
4 2010 Lauren Boston 0.52
5 2012 Lauren New_York 0.347https://stackoverflow.com/questions/72048893
复制相似问题