首页 > 解决方案 > 如何对数据进行分类并绘制图表

问题描述

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 ?")

输出如下: -

赢得折腾是优势吗?

如何将数据分成赢家和输家两列并得到两个条形图?提前谢谢了。

标签: rif-statementggplot2bar-chart

解决方案


要计算基于折腾赢得的比赛数量,您可以执行以下操作:

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")

在此处输入图像描述


推荐阅读