Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Introduction
In this post I create RMarkdown templates for end-to-end analysis of IPL T20 matches, that are available on Cricsheet based on my R package yorkr. With these templates you can convert all IPL data which is in yaml format to R dataframes. Further I create data and the necessary templates for analyzing IPL matches, teams and players. All of these can be accessed at yorkrIPLTemplate. The templates are
- Template for conversion and setup – IPLT20Template.Rmd
- Any IPL match – IPLMatchtemplate.Rmd
- IPL matches between 2 nations – IPLMatches2TeamTemplate.Rmd
- A IPL nations performance against all other IPL nations – IPLAllMatchesAllOppnTemplate.Rmd
- Analysis of IPL batsmen and bowlers of all IPL nations – IPLBatsmanBowlerTemplate.Rmd
Besides the templates the repository also includes the converted data for all IPL matches I downloaded from Cricsheet in Dec 2016. So this data is complete till the 2016 IPL season. You can recreate the files as more matches are added to Cricsheet site in IPL 2017 and future seasons. This post contains all the steps needed for detailed analysis of IPL matches, teams and IPL player. This will also be my reference in future if I decide to analyze IPL in future!
There will be 5 folders at the root
- IPLdata – Match files as yaml from Cricsheet
- IPLMatches – Yaml match files converted to dataframes
- IPLMatchesBetween2Teams – All Matches between any 2 IPL teams
- allMatchesAllOpposition – An IPL teams’s performance against all other teams
- BattingBowlingDetails – Batting and bowling details of all IPL teams
library(yorkr) library(dplyr)
The first few steps take care of the data setup. This needs to be done before any of the analysis of IPL batsmen, bowlers, any IPL match, matches between any 2 IPL countries or analysis of a teams performance against all other countries
There will be 5 folders at the root
- data
- IPLMatches
- IPLMatchesBetween2Teams
- allMatchesAllOpposition
- BattingBowlingDetails
The source YAML files will be in IPLData folder
1.Create directory of IPLMatches
Some files may give conversions errors. You could try to debug the problem or just remove it from the IPLdata folder. At most 2-4 file will have conversion problems and I usally remove then from the files to be converted.
Also take a look at my GooglyPlus shiny app which was created after performing the same conversion on the Dec 16 data .
convertAllYaml2RDataframesT20("data","IPLMatches")
2.Save all matches between all combinations of IPL nations
This function will create the set of all matches between each IPL team against every other IPL team. This uses the data that was created in IPLMatches, with the convertAllYaml2RDataframesIPL() function.
setwd("./IPLMatchesBetween2Teams") saveAllMatchesBetween2IPLTeams("../IPLMatches")
3.Save all matches against all opposition
This will create a consolidated dataframe of all matches played by every IPL playing nation against all other nattions. This also uses the data that was created in IPLMatches, with the convertAllYaml2RDataframesIPL() function.
setwd("../allMatchesAllOpposition") saveAllMatchesAllOppositionIPLT20("../IPLMatches")
4. Create batting and bowling details for each IPL team
These are the current IPL playing teams. You can add to this vector as newer IPL teams start playing IPL. You will get to know all IPL teams by also look at the directory created above namely allMatchesAllOpposition. This also uses the data that was created in IPLMatches, with the convertAllYaml2RDataframesIPL() function.
setwd("../BattingBowlingDetails") ipl_teams <- list("Chennai Super Kings","Deccan Chargers", "Delhi Daredevils","Kings XI Punjab", "Kochi Tuskers Kerala","Kolkata Knight Riders","Mumbai Indians","Pune Warriors", "Rajasthan Royals","Royal Challengers Bangalore","Sunrisers Hyderabad","Gujarat Lions", "Rising Pune Supergiants") for(i in seq_along(ipl_teams)){ print(ipl_teams[i]) val <- paste(ipl_teams[i],"-details",sep="") val <- getTeamBattingDetails(ipl_teams[i],dir="../IPLMatches", save=TRUE) } for(i in seq_along(ipl_teams)){ print(ipl_teams[i]) val <- paste(ipl_teams[i],"-details",sep="") val <- getTeamBowlingDetails(ipl_teams[i],dir="../IPLMatches", save=TRUE) }
5. Get the list of batsmen for a particular IPL team
The following code is needed for analyzing individual IPL batsmen. In IPL a player could have played in multiple IPL teams.
getBatsmen <- function(df){ bmen <- df %>% distinct(batsman) bmen <- as.character(bmen$batsman) batsmen <- sort(bmen) } load("Chennai Super Kings-BattingDetails.RData") csk_details <- battingDetails load("Deccan Chargers-BattingDetails.RData") dc_details <- battingDetails load("Delhi Daredevils-BattingDetails.RData") dd_details <- battingDetails load("Kings XI Punjab-BattingDetails.RData") kxip_details <- battingDetails load("Kochi Tuskers Kerala-BattingDetails.RData") ktk_details <- battingDetails load("Kolkata Knight Riders-BattingDetails.RData") kkr_details <- battingDetails load("Mumbai Indians-BattingDetails.RData") mi_details <- battingDetails load("Pune Warriors-BattingDetails.RData") pw_details <- battingDetails load("Rajasthan Royals-BattingDetails.RData") rr_details <- battingDetails load("Royal Challengers Bangalore-BattingDetails.RData") rcb_details <- battingDetails load("Sunrisers Hyderabad-BattingDetails.RData") sh_details <- battingDetails load("Gujarat Lions-BattingDetails.RData") gl_details <- battingDetails load("Rising Pune Supergiants-BattingDetails.RData") rps_details <- battingDetails #Get the batsmen for each IPL team csk_batsmen <- getBatsmen(csk_details) dc_batsmen <- getBatsmen(dc_details) dd_batsmen <- getBatsmen(dd_details) kxip_batsmen <- getBatsmen(kxip_details) ktk_batsmen <- getBatsmen(ktk_details) kkr_batsmen <- getBatsmen(kkr_details) mi_batsmen <- getBatsmen(mi_details) pw_batsmen <- getBatsmen(pw_details) rr_batsmen <- getBatsmen(rr_details) rcb_batsmen <- getBatsmen(rcb_details) sh_batsmen <- getBatsmen(sh_details) gl_batsmen <- getBatsmen(gl_details) rps_batsmen <- getBatsmen(rps_details) # Save the dataframes save(csk_batsmen,file="csk.RData") save(dc_batsmen, file="dc.RData") save(dd_batsmen, file="dd.RData") save(kxip_batsmen, file="kxip.RData") save(ktk_batsmen, file="ktk.RData") save(kkr_batsmen, file="kkr.RData") save(mi_batsmen , file="mi.RData") save(pw_batsmen, file="pw.RData") save(rr_batsmen, file="rr.RData") save(rcb_batsmen, file="rcb.RData") save(sh_batsmen, file="sh.RData") save(gl_batsmen, file="gl.RData") save(rps_batsmen, file="rps.RData")
6. Get the list of bowlers for a particular IPL team
The method below can get the list of bowler names for any IPL team.The following code is needed for analyzing individual IPL bowlers. In IPL a player could have played in multiple IPL teams.
getBowlers <- function(df){ bwlr <- df %>% distinct(bowler) bwlr <- as.character(bwlr$bowler) bowler <- sort(bwlr) } load("Chennai Super Kings-BowlingDetails.RData") csk_details <- bowlingDetails load("Deccan Chargers-BowlingDetails.RData") dc_details <- bowlingDetails load("Delhi Daredevils-BowlingDetails.RData") dd_details <- bowlingDetails load("Kings XI Punjab-BowlingDetails.RData") kxip_details <- bowlingDetails load("Kochi Tuskers Kerala-BowlingDetails.RData") ktk_details <- bowlingDetails load("Kolkata Knight Riders-BowlingDetails.RData") kkr_details <- bowlingDetails load("Mumbai Indians-BowlingDetails.RData") mi_details <- bowlingDetails load("Pune Warriors-BowlingDetails.RData") pw_details <- bowlingDetails load("Rajasthan Royals-BowlingDetails.RData") rr_details <- bowlingDetails load("Royal Challengers Bangalore-BowlingDetails.RData") rcb_details <- bowlingDetails load("Sunrisers Hyderabad-BowlingDetails.RData") sh_details <- bowlingDetails load("Gujarat Lions-BowlingDetails.RData") gl_details <- bowlingDetails load("Rising Pune Supergiants-BowlingDetails.RData") rps_details <- bowlingDetails # Get the bowlers for each team csk_bowlers <- getBowlers(csk_details) dc_bowlers <- getBowlers(dc_details) dd_bowlers <- getBowlers(dd_details) kxip_bowlers <- getBowlers(kxip_details) ktk_bowlers <- getBowlers(ktk_details) kkr_bowlers <- getBowlers(kkr_details) mi_bowlers <- getBowlers(mi_details) pw_bowlers <- getBowlers(pw_details) rr_bowlers <- getBowlers(rr_details) rcb_bowlers <- getBowlers(rcb_details) sh_bowlers <- getBowlers(sh_details) gl_bowlers <- getBowlers(gl_details) rps_bowlers <- getBowlers(rps_details) #Save the dataframes save(csk_bowlers,file="csk1.RData") save(dc_bowlers, file="dc1.RData") save(dd_bowlers, file="dd1.RData") save(kxip_bowlers, file="kxip1.RData") save(ktk_bowlers, file="ktk1.RData") save(kkr_bowlers, file="kkr1.RData") save(mi_bowlers , file="mi1.RData") save(pw_bowlers, file="pw1.RData") save(rr_bowlers, file="rr1.RData") save(rcb_bowlers, file="rcb1.RData") save(sh_bowlers, file="sh1.RData") save(gl_bowlers, file="gl1.RData") save(rps_bowlers, file="rps1.RData")
Now we are all set
A) IPL T20 Match Analysis
1 IPL Match Analysis
Load any match data from the ./IPLMatches folder for e.g. Chennai Super Kings-Deccan Chargers-2008-05-06.RData
setwd("./IPLMatches") load("Chennai Super Kings-Deccan Chargers-2008-05-06.RData") csk_dc<- overs #The steps are load("IPLTeam1-IPLTeam2-Date.Rdata") IPLTeam1_IPLTeam2 <- overs
All analysis for this match can be done now
2. Scorecard
teamBattingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam1") teamBattingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam2")
3.Batting Partnerships
teamBatsmenPartnershipMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") teamBatsmenPartnershipMatch(IPLTeam1_IPLTeam2,"IPLTeam2","IPLTeam1")
4. Batsmen vs Bowler Plot
teamBatsmenVsBowlersMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=TRUE) teamBatsmenVsBowlersMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE)
5. Team bowling scorecard
teamBowlingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam1") teamBowlingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam2")
6. Team bowling Wicket kind match
teamBowlingWicketKindMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") m <-teamBowlingWicketKindMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m
7. Team Bowling Wicket Runs Match
teamBowlingWicketRunsMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") m <-teamBowlingWicketRunsMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m
8. Team Bowling Wicket Match
m <-teamBowlingWicketMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m teamBowlingWicketMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2")
9. Team Bowler vs Batsmen
teamBowlersVsBatsmenMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") m <- teamBowlersVsBatsmenMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m
10. Match Worm chart
matchWormGraph(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2")
B) IPL Matches between 2 IPL teams
1 IPL Match Analysis
Load any match data from the ./IPLMatches folder for e.g. Chennai Super Kings-Deccan Chargers-2008-05-06.RData
setwd("./IPLMatches") load("Chennai Super Kings-Deccan Chargers-2008-05-06.RData") csk_dc<- overs #The steps are load("IPLTeam1-IPLTeam2-Date.Rdata") IPLTeam1_IPLTeam2 <- overs
All analysis for this match can be done now
2. Scorecard
teamBattingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam1") teamBattingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam2")
3.Batting Partnerships
teamBatsmenPartnershipMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") teamBatsmenPartnershipMatch(IPLTeam1_IPLTeam2,"IPLTeam2","IPLTeam1")
4. Batsmen vs Bowler Plot
teamBatsmenVsBowlersMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=TRUE) teamBatsmenVsBowlersMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE)
5. Team bowling scorecard
teamBowlingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam1") teamBowlingScorecardMatch(IPLTeam1_IPLTeam2,"IPLTeam2")
6. Team bowling Wicket kind match
teamBowlingWicketKindMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") m <-teamBowlingWicketKindMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m
7. Team Bowling Wicket Runs Match
teamBowlingWicketRunsMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") m <-teamBowlingWicketRunsMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m
8. Team Bowling Wicket Match
m <-teamBowlingWicketMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m teamBowlingWicketMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2")
9. Team Bowler vs Batsmen
teamBowlersVsBatsmenMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2") m <- teamBowlersVsBatsmenMatch(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2",plot=FALSE) m
10. Match Worm chart
matchWormGraph(IPLTeam1_IPLTeam2,"IPLTeam1","IPLTeam2")
C) IPL Matches for a team against all other teams
1. IPL Matches for a team against all other teams
Load the data between for a IPL team against all other countries ./allMatchesAllOpposition for e.g all matches of Kolkata Knight Riders
load("allMatchesAllOpposition-Kolkata Knight Riders.RData") kkr_matches <- matches IPLTeam="IPLTeam1" allMatches <- paste("allMatchesAllOposition-",IPLTeam,".RData",sep="") load(allMatches) IPLTeam1AllMatches <- matches
2. Team’s batting scorecard all Matches
m <-teamBattingScorecardAllOppnAllMatches(IPLTeam1AllMatches,theTeam="IPLTeam1") m
3. Batting scorecard of opposing team
m <-teamBattingScorecardAllOppnAllMatches(matches=IPLTeam1AllMatches,theTeam="IPLTeam2")
4. Team batting partnerships
m <- teamBatsmenPartnershipAllOppnAllMatches(IPLTeam1AllMatches,theTeam="IPLTeam1") m m <- teamBatsmenPartnershipAllOppnAllMatches(IPLTeam1AllMatches,theTeam='IPLTeam1',report="detailed") head(m,30) m <- teamBatsmenPartnershipAllOppnAllMatches(IPLTeam1AllMatches,theTeam='IPLTeam1',report="summary") m
5. Team batting partnerships plot
teamBatsmenPartnershipAllOppnAllMatchesPlot(IPLTeam1AllMatches,"IPLTeam1",main="IPLTeam1") teamBatsmenPartnershipAllOppnAllMatchesPlot(IPLTeam1AllMatches,"IPLTeam1",main="IPLTeam2")
6, Team batsmen vs bowlers report
m <-teamBatsmenVsBowlersAllOppnAllMatchesRept(IPLTeam1AllMatches,"IPLTeam1",rank=0) m m <-teamBatsmenVsBowlersAllOppnAllMatchesRept(IPLTeam1AllMatches,"IPLTeam1",rank=1,dispRows=30) m m <-teamBatsmenVsBowlersAllOppnAllMatchesRept(matches=IPLTeam1AllMatches,theTeam="IPLTeam2",rank=1,dispRows=25) m
7. Team batsmen vs bowler plot
d <- teamBatsmenVsBowlersAllOppnAllMatchesRept(IPLTeam1AllMatches,"IPLTeam1",rank=1,dispRows=50) d teamBatsmenVsBowlersAllOppnAllMatchesPlot(d) d <- teamBatsmenVsBowlersAllOppnAllMatchesRept(IPLTeam1AllMatches,"IPLTeam1",rank=2,dispRows=50) teamBatsmenVsBowlersAllOppnAllMatchesPlot(d)
8. Team bowling scorecard
teamBowlingScorecardAllOppnAllMatchesMain(matches=IPLTeam1AllMatches,theTeam="IPLTeam1") teamBowlingScorecardAllOppnAllMatches(IPLTeam1AllMatches,'IPLTeam2')
9. Team bowler vs batsmen
teamBowlersVsBatsmenAllOppnAllMatchesMain(IPLTeam1AllMatches,theTeam="IPLTeam1",rank=0) teamBowlersVsBatsmenAllOppnAllMatchesMain(IPLTeam1AllMatches,theTeam="IPLTeam1",rank=2) teamBowlersVsBatsmenAllOppnAllMatchesRept(matches=IPLTeam1AllMatches,theTeam="IPLTeam1",rank=0)
10. Team Bowler vs bastmen
df <- teamBowlersVsBatsmenAllOppnAllMatchesRept(IPLTeam1AllMatches,theTeam="IPLTeam1",rank=1) teamBowlersVsBatsmenAllOppnAllMatchesPlot(df,"IPLTeam1","IPLTeam1")
11. Team bowler wicket kind
teamBowlingWicketKindAllOppnAllMatches(IPLTeam1AllMatches,t1="IPLTeam1",t2="All") teamBowlingWicketKindAllOppnAllMatches(IPLTeam1AllMatches,t1="IPLTeam1",t2="IPLTeam2")
12.
teamBowlingWicketRunsAllOppnAllMatches(IPLTeam1AllMatches,t1="IPLTeam1",t2="All",plot=TRUE) teamBowlingWicketRunsAllOppnAllMatches(IPLTeam1AllMatches,t1="IPLTeam1",t2="IPLTeam2",plot=TRUE)
1 IPL Batsman setup functions
Get the batsman’s details for a batsman
setwd("../BattingBowlingDetails") # IPL Team names IPLTeamNames <- list("Chennai Super Kings","Deccan Chargers", "Delhi Daredevils","Kings Xi Punjab", "Kochi Tuskers Kerala","Kolkata Knight Riders","Mumbai Indians","Pune Warriors", "Rajasthan Royals","Royal Challengers Bangalore","Sunrisers Hyderabad","Gujarat Lions", "Rising Pune Supergiants") # Check and get the team indices of IPL teams in which the batsman has played getTeamIndex <- function(batsman){ setwd("./BattingBowlingDetails") load("csk.RData") load("dc.RData") load("dd.RData") load("kxip.RData") load("ktk.RData") load("kkr.RData") load("mi.RData") load("pw.RData") load("rr.RData") load("rcb.RData") load("sh.RData") load("gl.RData") load("rps.RData") setwd("..") getwd() print(ls()) teams_batsmen = list(csk_batsmen,dc_batsmen,dd_batsmen,kxip_batsmen,ktk_batsmen,kkr_batsmen,mi_batsmen, pw_batsmen,rr_batsmen,rcb_batsmen,sh_batsmen,gl_batsmen,rps_batsmen) b <- NULL for (i in 1:length(teams_batsmen)){ a <- which(teams_batsmen[[i]] == batsman) if(length(a) != 0) b <- c(b,i) } b } # Get the list of the IPL team names from the indices passed getTeams <- function(x){ l <- NULL # Get the teams passed in as indexes for (i in seq_along(x)){ l <- c(l, IPLTeamNames[[x[i]]]) } l } # Create a consolidated data frame with all teams the IPL batsman has played for getIPLBatsmanDF <- function(teamNames){ batsmanDF <- NULL # Create a consolidated Data frame of batsman for all IPL teams played for (i in seq_along(teamNames)){ df <- getBatsmanDetails(team=teamNames[i],name=IPLBatsman,dir="./BattingBowlingDetails") batsmanDF <- rbind(batsmanDF,df) } batsmanDF }
2. Create a consolidated IPL batsman data frame
# Since an IPL batsman coculd have played in multiple teams we need to determine these teams and # create a consolidated data frame for the analysis # For example to check MS Dhoni we need to do the following IPLBatsman = "MS Dhoni" #Check and get the team indices of IPL teams in which the batsman has played i <- getTeamIndex(IPLBatsman) # Get the team names in which the IPL batsman has played teamNames <- getTeams(i) # Check if file exists in the directory. This check is necessary when moving between matchType ############## Create a consolidated IPL batsman dataframe for analysis batsmanDF <- getIPLBatsmanDF(teamNames)
3. Runs vs deliveries
# For e.g. batsmanName="MS Dhoni"" #batsmanRunsVsDeliveries(batsmanDF, "MS Dhoni") batsmanRunsVsDeliveries(batsmanDF,"batsmanName")
4. Batsman 4s & 6s
batsman46 <- select(batsmanDF,batsman,ballsPlayed,fours,sixes,runs) p1 <- batsmanFoursSixes(batsman46,"batsmanName")
5. Batsman dismissals
batsmanDismissals(batsmanDF,"batsmanName")
6. Runs vs Strike rate
batsmanRunsVsStrikeRate(batsmanDF,"batsmanName")
7. Batsman Moving Average
batsmanMovingAverage(batsmanDF,"batsmanName")
8. Batsman cumulative average
batsmanCumulativeAverageRuns(batsmanDF,"batsmanName")
9. Batsman cumulative strike rate
batsmanCumulativeStrikeRate(batsmanDF,"batsmanName")
10. Batsman runs against oppositions
batsmanRunsAgainstOpposition(batsmanDF,"batsmanName")
11. Batsman runs vs venue
batsmanRunsVenue(batsmanDF,"batsmanName")
12. Batsman runs predict
batsmanRunsPredict(batsmanDF,"batsmanName")
13.Bowler set up functions
setwd("../BattingBowlingDetails") # IPL Team names IPLTeamNames <- list("Chennai Super Kings","Deccan Chargers", "Delhi Daredevils","Kings Xi Punjab", "Kochi Tuskers Kerala","Kolkata Knight Riders","Mumbai Indians","Pune Warriors", "Rajasthan Royals","Royal Challengers Bangalore","Sunrisers Hyderabad","Gujarat Lions", "Rising Pune Supergiants") # Get the team indices of IPL teams for which the bowler as played getTeamIndex_bowler <- function(bowler){ # Load IPL Bowlers setwd("./data") load("csk1.RData") load("dc1.RData") load("dd1.RData") load("kxip1.RData") load("ktk1.RData") load("kkr1.RData") load("mi1.RData") load("pw1.RData") load("rr1.RData") load("rcb1.RData") load("sh1.RData") load("gl1.RData") load("rps1.RData") setwd("..") teams_bowlers = list(csk_bowlers,dc_bowlers,dd_bowlers,kxip_bowlers,ktk_bowlers,kkr_bowlers,mi_bowlers, pw_bowlers,rr_bowlers,rcb_bowlers,sh_bowlers,gl_bowlers,rps_bowlers) b <- NULL for (i in 1:length(teams_bowlers)){ a <- which(teams_bowlers[[i]] == bowler) if(length(a) != 0){ b <- c(b,i) } } b } # Get the list of the IPL team names from the indices passed getTeams <- function(x){ l <- NULL # Get the teams passed in as indexes for (i in seq_along(x)){ l <- c(l, IPLTeamNames[[x[i]]]) } l } # Get the team names teamNames <- getTeams(i) getIPLBowlerDF <- function(teamNames){ bowlerDF <- NULL # Create a consolidated Data frame of batsman for all IPL teams played for (i in seq_along(teamNames)){ df <- getBowlerWicketDetails(team=teamNames[i],name=IPLBowler,dir="./BattingBowlingDetails") bowlerDF <- rbind(bowlerDF,df) } bowlerDF }
14. Get the consolidated data frame for an IPL bowler
# Since an IPL bowler could have played in multiple teams we need to determine these teams and # create a consolidated data frame for the analysis # For example to check R Ashwin we need to do the following IPLBowler = "R Ashwin" #Check and get the team indices of IPL teams in which the batsman has played i <- getTeamIndex(IPLBowler) # Get the team names in which the IPL batsman has played teamNames <- getTeams(i) # Check if file exists in the directory. This check is necessary when moving between matchType ############## Create a consolidated IPL batsman dataframe for analysis bowlerDF <- getIPLBowlerDF(teamNames)
15. Bowler Mean Economy rate
# For e.g. to get the details of R Ashwin do #bowlerMeanEconomyRate(bowlerDF,"R Ashwin") bowlerMeanEconomyRate(bowlerDF,"bowlerName")
16. Bowler mean runs conceded
bowlerMeanRunsConceded(bowlerDF,"bowlerName")
17. Bowler Moving Average
bowlerMovingAverage(bowlerDF,"bowlerName")
18. Bowler cumulative average wickets
bowlerCumulativeAvgWickets(bowlerDF,"bowlerName")
19. Bowler cumulative Economy Rate (ER)
bowlerCumulativeAvgEconRate(bowlerDF,"bowlerName")
20. Bowler wicket plot
bowlerWicketPlot(bowlerDF,"bowlerName")
21. Bowler wicket against opposition
bowlerWicketsAgainstOpposition(bowlerDF,"bowlerName")
22. Bowler wicket at cricket grounds
bowlerWicketsVenue(bowlerDF,"bowlerName")
23. Predict number of deliveries to wickets
setwd("./IPLMatches") bowlerDF1 <- getDeliveryWickets(team="IPLTeam1",dir=".",name="bowlerName",save=FALSE) bowlerWktsPredict(bowlerDF1,"bowlerName")
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.