我有一個如下所示的資料框(真實資料有更多人):
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
我想計算一個辦公室人員級別的度量(計數),它捕獲一個人在進入當前辦公室之前經歷的辦公室的加權數量。公式為(歷年作業年限1/任職前歷年總數)^2 (歷年任職年限2/任職前歷年總數)^2 ......
下面是理想的輸出。對于勞倫來說,波士頓是她的第一個辦公室。因此,她在波士頓的計數是 0。對于 Lauren,芝加哥是她的第二個辦公室,她在 2008-2005=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
uj5u.com熱心網友回復:
您可以在這個問題中使用類似的方法:
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.347
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467215.html
