如何在R中的data.frame中聚合数据

Den*_*nis 2 aggregate r dataframe

我有一个大的data.frame.data.frame包含很多值.

例如:

df <- data.frame(Company = c('A', 'A', 'B', 'C', 'A', 'B', 'B', 'C', 'C'), 
                 Name = c("Wayne", "Duane", "William", "Rafael", "John", "Eric", "James", "Pablo", "Tammy"), 
                 Age = c(26, 27, 28, 32, 28, 24, 34, 30, 25), 
                 Wages = c(50000, 70000, 70000, 60000, 50000, 70000, 65000, 50000, 50000), 
                 Education.University = c(1, 1, 1, 0, 0, 1, 1, 0, 1), 
                 Productivity = c(100, 120, 120, 95, 88, 115, 100, 90, 120))
Run Code Online (Sandbox Code Playgroud)

我如何汇总我的data.frame?我想分析每家公司的价值观.它必须看起来像:

在此输入图像描述

年龄 - >公司所有员工的平均年龄

工资 - >公司所有员工的平均工资

Education.University - >公司所有员工的因素(1或0)之和

生产力 - >公司所有员工的平均生产率

d.b*_*d.b 9

基地R.

cbind(aggregate(.~Company, df[,-c(2, 5)], mean),
      aggregate(Education.University~Company, df, sum)[-1])
#  Company      Age    Wages Productivity Education.University
#1       A 27.00000 56666.67     102.6667                    2
#2       B 28.66667 68333.33     111.6667                    3
#3       C 29.00000 53333.33     101.6667                    1
Run Code Online (Sandbox Code Playgroud)

以下是可能更容易理解的较长版本

merge(x = aggregate(x = list(Age_av = df$Age,
                             Wages_av = df$Wages,
                             Productivity_av = df$Productivity),
                by = list(Company = df$Company),
                FUN = mean),
      y = aggregate(x = list(Education.University_sum = df$Education.University),
                by = list(Company = df$Company),
                FUN = sum),
      by = "Company")
#  Company   Age_av Wages_av Productivity_av Education.University_sum
#1       A 27.00000 56666.67        102.6667                        2
#2       B 28.66667 68333.33        111.6667                        3
#3       C 29.00000 53333.33        101.6667                        1
Run Code Online (Sandbox Code Playgroud)