R语言,如何通过跳过相同数字的组求和(嵌套在另一个组中)?

问题描述 投票:-1回答:1

我想添加一个新列,计算每个公司每位员工的平均奖金,例如,公司A的预期输出为(18 + 8 + 2)/ 3,并将值填入公司A的每一行然后,对于公司B,C,D.BTW来说,相同的逻辑不能删除具有重复值的行。刚开始,我当时在考虑计算奖金平均值的总和,但是代码没有用。然后我在考虑添加一个跳过相同值的循环,但是它也不起作用。有人有什么想法吗?我非常感谢!enter image description here

r nested sum mean
1个回答
0
投票

缺乏可读的输入,我组成了一些

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

思考这就是您的想法。

© www.soinside.com 2019 - 2024. All rights reserved.