r - R中多个因素的汇总统计?
问题描述
对于每款游戏,我都有如下所示的游戏数据:
ID | 位置 | 团队 | 欧普 | 分数 |
---|---|---|---|---|
0 | 一个 | 鸭子 | 青蛙 | 2 |
1 | 乙 | 鸭子 | 青蛙 | 15 |
2 | 乙 | 鸭子 | 青蛙 | 20 |
3 | C | 鸭子 | 青蛙 | 7 |
4 | C | 鸭子 | 青蛙 | 9.5 |
5 | C | 鸭子 | 青蛙 | 10 |
6 | 一个 | 青蛙 | 鸭子 | 3 |
7 | 一个 | 青蛙 | 鸭子 | 0.5 |
8 | 乙 | 青蛙 | 鸭子 | 17 |
9 | 乙 | 青蛙 | 鸭子 | 13 |
10 | 乙 | 青蛙 | 鸭子 | 21 |
11 | C | 青蛙 | 鸭子 | 8.5 |
我想获得每个位置和团队(以及他们的对手)的平均分数,所以结果看起来像这样。
ID | 位置 | 团队 | 欧普 | 分数 | Team_A_Avg | Opp_A_Avg | Team_B_Avg | Opp_B_Avg | Team_C_Avg | Opp_C_Avg |
---|---|---|---|---|---|---|---|---|---|---|
0 | 一个 | 鸭子 | 青蛙 | 2 | 2 | 1.75 | 17.5 | 17 | 8.8333 | 8.5 |
1 | 乙 | 鸭子 | 青蛙 | 15 | 2 | 1.75 | 17.5 | 17 | 8.8333 | 8.5 |
2 | 乙 | 鸭子 | 青蛙 | 20 | 2 | 1.75 | 17.5 | 17 | 8.8333 | 8.5 |
3 | C | 鸭子 | 青蛙 | 7 | 2 | 1.75 | 17.5 | 17 | 8.8333 | 8.5 |
4 | C | 鸭子 | 青蛙 | 9.5 | 2 | 1.75 | 17.5 | 17 | 8.8333 | 8.5 |
5 | C | 鸭子 | 青蛙 | 10 | 2 | 1.75 | 17.5 | 17 | 8.8333 | 8.5 |
6 | 一个 | 青蛙 | 鸭子 | 3 | 1.75 | 2 | 17 | 17.5 | 8.5 | 8.8333 |
7 | 一个 | 青蛙 | 鸭子 | 0.5 | 1.75 | 2 | 17 | 17.5 | 8.5 | 8.8333 |
8 | 乙 | 青蛙 | 鸭子 | 17 | 1.75 | 2 | 17 | 17.5 | 8.5 | 8.8333 |
9 | 乙 | 青蛙 | 鸭子 | 13 | 1.75 | 2 | 17 | 17.5 | 8.5 | 8.8333 |
10 | 乙 | 青蛙 | 鸭子 | 21 | 1.75 | 2 | 17 | 17.5 | 8.5 | 8.8333 |
11 | C | 青蛙 | 鸭子 | 8.5 | 1.75 | 2 | 17 | 17.5 | 8.5 | 8.8333 |
解决这个问题的最佳方法是什么?
解决方案
正如@Maurits Evers 所评论的那样,您呈现输出的方式并没有真正的意义。似乎您想要一个单独的输出,其中包含每个团队和位置的平均分数。另外,你只给了我们每一行的分数,我认为这是 的分数Team
,所以我们没有对手的分数来计算平均值。我会使用dplyr
summarise
函数。
这是您的数据:
game = data.frame(id = c(0:11),
Pos = c("A", "B", "B", "C", "C", "C","A","A", "B", "B", "B","C"),
Team = c("Duck","Duck","Duck","Duck","Duck","Duck","Frog","Frog","Frog","Frog","Frog","Frog"),
Opp = c("Frog","Frog","Frog","Frog","Frog","Frog","Duck","Duck","Duck","Duck","Duck","Duck"),
Score = c(2, 15, 20, 7, 9.5, 10, 3, 0.5, 17, 13, 21, 8.5))
首先按位置平均:
library(dplyr)
Pos_av = game%>% #creat a new data.frame called "Pos_av" which is taking data from "game" and piping it (%>%) into different functions
group_by(Pos)%>% #first into a grouping function so we chose the variable we want to find the average for
summarise(Pos_Mean = mean(Score)) # the we pipe into summarise function where we name our new variable (Pos_Mean) and then define the function we want to use to summarise it (in this case the mean)
然后对于团队来说也是一样的意思:
Team_av = game%>%
group_by(Team)%>%
summarise(Team_Mean = mean(Score))
要获得每个团队和位置的平均值,请按两个变量分组:
Both_av = game%>%
group_by(Team, Pos)%>%
summarise(Mean = mean(Score))
推荐阅读
- java - Apache Spark:有没有办法在 spark 中读取 CSV 文件并将它们直接转换为 Byte[] 而无需将文件保存在任何地方
- c# - C# 中的 MS Dynamics Query 审计返回 EntityReference 而不是名称
- sql-update - Sequelize 模型仅在我注销然后重新登录时更新
- powershell - 使用powershell,如何从客户端修改和保存客户端outlook规则?
- python - 如何比较两个图中的节点和边?
- android - 设备突然停止接收 Firebase 数据消息
- json - 如何从网页中查找元素并将其导入 Google 表格单元格?
- python - 如何从路由表 txt 中获取网络/子网和下一跳
- java - 主线程超过设置的休眠时间
- python-3.x - 从电子邮件链中提取消息正文 - python