r - 具有汇总组合的多级聚合
问题描述
假设我有以下数据
data <-
structure(list(Age = c(">30", ">30", ">30", ">30", ">30", ">30",
">30", ">30", "<=30", "<=30", "<=30", "<=30", "<=30", "<=30",
"<=30", "<=30"), Experience = c("Yes", "Yes", "Yes", "Yes", "No",
"No", "No", "No", "Yes", "Yes", "Yes", "Yes", "No", "No", "No",
"No"), State = c("Lusiana", "Lusiana", "Lusiana", "Lusiana",
"Lusiana", "Lusiana", "Lusiana", "Lusiana", "Lusiana", "Lusiana",
"Lusiana", "Lusiana", "Lusiana", "Lusiana", "Lusiana", "Lusiana"
), City = c("Houma", "Houma", "Ruston", "Ruston", "Houma", "Houma",
"Ruston", "Ruston", "Houma", "Houma", "Ruston", "Ruston", "Houma",
"Houma", "Ruston", "Ruston"), Salary = c(1200, 1100, 1400, 1500,
1000, 1300, 2000, 1500, 1200, 1100, 1400, 1500, 1000, 1300, 2000,
1500)), row.names = c(NA, -16L), class = c("tbl_df", "tbl", "data.frame"
))
数据的顶部
Age Experience State City Salary
<chr> <chr> <chr> <chr> <dbl>
1 >30 Yes Lusiana Houma 1200
2 >30 Yes Lusiana Houma 1100
3 >30 Yes Lusiana Ruston 1400
4 >30 Yes Lusiana Ruston 1500
5 >30 No Lusiana Houma 1000
6 >30 No Lusiana Houma 1300
在这种情况下,我想按城市计算最高工资以及该州的这些值的总和,并且我想针对年龄和经验的每种组合进行计算。
预期输出是
我的另一个疑问
有没有办法在汇总中强制与汇总中的不同组合相同的级别?我的意思是将 A + B 和 B + A 视为不同的组合?
解决方案
计算每个人的max
工资和每个City
人sum
的工资State
。
library(dplyr)
data %>%
group_by(Age, Experience, State, City) %>%
summarise(Salary = max(Salary)) %>%
summarise(Salary = sum(Salary), .groups = 'drop')
# Age Experience State Salary
# <chr> <chr> <chr> <dbl>
#1 <=30 No Lusiana 3300
#2 <=30 Yes Lusiana 2700
#3 >30 No Lusiana 3300
#4 >30 Yes Lusiana 2700
如果你想这样做data.table
:
library(data.table)
setDT(data)[, .(Salary = max(Salary)), .(Age, Experience, State, City)][,
.(Salary = sum(Salary)), .(Age, Experience, State)]
推荐阅读
- iis - 如何从 VBScript 在 Active Directory 中创建附加属性?
- r - 在通过 ODBC 连接到 Access 数据库的 R 中,如何更新文本字段?
- spss - 部分数据在spss中显示不全
- angular - 如何删除 ng-select 的删除选项
- javascript - 使用文件数据(多部分/表单数据)处理时,DRF 数据未验证下一个对象
- ruby-on-rails - 如何设置嵌套在主干模型中的主干集合并将其保存到 Rails API?
- flutter - Flutter 定制的 TTS 引擎,如何在 for 循环中实现每次迭代之间的暂停
- bash - chmod +x 找不到 build.sh 文件
- html - 更改班级优先级
- spring-boot - 数据未在 Thymeleaf、Webflux 中呈现