我想添加一个新列,计算每个公司每位员工的平均奖金,例如,公司A的预期输出为(18 + 8 + 2)/ 3,并将值填入公司A的每一行然后,对于公司B,C,D.BTW来说,相同的逻辑不能删除具有重复值的行。刚开始,我当时在考虑计算奖金平均值的总和,但是代码没有用。然后我在考虑添加一个跳过相同值的循环,但是它也不起作用。有人有什么想法吗?我非常感谢!enter image description here
缺乏可读的输入,我组成了一些
set.seed(30258)
df <- tibble(COMPANY.ID = sample(LETTERS[1:4], 20, replace = TRUE),
EMP.ID = sample(1:5, 20, replace = TRUE),
BONUS = sample(2:20, 20, replace = TRUE)) %>%
arrange(COMPANY.ID, EMP.ID, BONUS)
# A tibble: 20 x 3
COMPANY.ID EMP.ID BONUS
<chr> <int> <int>
1 A 1 3
2 A 2 13
3 A 2 16
4 B 1 10
5 B 1 18
6 B 2 20
7 B 3 3
8 B 4 20
9 B 5 7
10 B 5 10
11 B 5 10
12 C 2 4
13 C 3 4
14 C 3 16
15 C 5 4
16 C 5 13
17 D 1 8
18 D 1 9
19 D 3 8
20 D 4 12
公司平均红利的公式-如果员工从同一家公司获得多笔红利,则它们是累加的。
avgCoBonus <- df %>%
group_by(COMPANY.ID) %>%
summarise(AVG.BONUS = round(sum(BONUS) / length(unique(EMP.ID)), 2))
# A tibble: 4 x 2
COMPANY.ID AVG.BONUS
<chr> <dbl>
1 A 16
2 B 17.6
3 C 13.7
4 D 12.3
我思考这就是您的想法。