r - 如何对数据进行分类并绘制图表
问题描述
https://www.kaggle.com/nowke9/ipldata ---- 包含数据集。
这是对两个 IPL 数据集执行的探索性数据分析。我希望在比赛数据集中建立球队赢得的投掷和比赛获胜者之间的关系。当我使用 ifelse 条件将数据分成赢家和输家并绘制图表时,我得到的输出是一个仅包含匹配总数的条形图,所有这些都是丢失图例的一部分。
这是代码 -
library(tidyverse)
deliveries_tbl <- read.csv("data/deliveries_updated.csv")
matches_tbl <- read.csv("data/matches_updated.csv")
matches_normal_result_tbl <- matches_tbl[matches_tbl$result == "normal",]
# Is winning toss really an adnavtage ? ----
matches_normal_result_tbl$toss_match <- ifelse(as.character(matches_normal_result_tbl$toss_winner)==
as.character(matches_normal_result_tbl$winner),
"Won", "Lost")
ggplot(matches_normal_result_tbl[which(!is.na(matches_normal_result_tbl$toss_match)),], aes(toss_match, fill = toss_match))+
geom_bar()+
xlab("Toss")+ ylab("Number of matches won")+
ggtitle("How much of advantage is winning the toss ?")
输出如下: -
如何将数据分成赢家和输家两列并得到两个条形图?提前谢谢了。
解决方案
要计算基于折腾赢得的比赛数量,您可以执行以下操作:
library(dplyr)
library(ggplot2)
matches %>%
mutate(toss_match = ifelse(toss_winner == winner, "Won", "Loss")) %>%
count(toss_match) %>%
ggplot() + aes(toss_match, n, fill = toss_match) +
geom_col() +
xlab("Toss")+ ylab("Number of matches won")+
ggtitle("How much of advantage is winning the toss ?")
您可以更进一步,对进行比赛的顶级城市进行相同的分析。
matches %>%
mutate(toss_match = ifelse(toss_winner == winner, "Won", "Loss")) %>%
count(city, toss_match) %>%
group_by(city) %>%
filter(all(n > 10)) %>%
mutate(n = n/sum(n) * 100) %>%
ggplot() + aes(city, n, fill = toss_match) +
geom_col() +
xlab("City")+ ylab("Percentage") +
ggtitle("Advantage of winning toss in each city")
推荐阅读
- reactjs - React:findDOMNode 被传递了一个 Transition 的实例
- yii2 - Yii2 控制台应用程序中的数组到字符串转换错误
- python - 具有批量大小的字符 RNN 分类
- python - 删除熊猫中的重复列
- knockout.js - 具有多个属性和空值检查的数据绑定?
- c++ - C ++:将reg_iterator复制到向量以便排序()和唯一()?
- python - 从 micropy 运行 urequests.get 时获取 OSError -202
- vhdl - 将两个无符号(8 位)相加并将结果存储在 9 位无符号中时的错误结果
- qt - QML 更新 ListView 内 Item 的属性
- javascript - 传入组件的道具未定义