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)之和
生产力 - >公司所有员工的平均生产率
基地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)