首页 > 解决方案 > R语言,如何通过跳过相同数字的组来求和值(嵌套在另一个组中)?

问题描述

我想添加一个新列,计算每个公司每个员工的平均奖金,例如,A公司的预期输出为(18+8+2)/3,并将该值填充到A公司的每一行。然后公司 B、C、D 的逻辑相同。顺便说一句,不能删除具有重复值的行。起初,我想计算奖金平均值的总和,但代码不起作用。然后我想添加一个跳过相同值的循环,但它也不起作用。有人有什么想法吗?我非常感谢!

在此处输入图像描述

标签: rnestedsummean

解决方案


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

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

这就是你的想法。


推荐阅读