μλ νμΈμ. μΈλ μ² νκ³Ό μ€ν°λ κ·Έλ£Ή LOPESμ μΆμ μ μ λλ€.
λ°μ΄ν° λΆμμ 곡λΆνλ©΄μ λλ μ μ νμ΅μ λ§κ² ꡬμ±λ λ°μ΄ν°κ° μ κ³ μ΄λ° ννμ μλ£λ₯Ό νμ€μ μΌλ‘ μ°Ύμ보기 μ΄λ ΅λ€λ μ μ λλ€. λ¬Όλ‘ μΊκΈ(Kaggle)μ΄λ μμΈμ ν΅κ³μλ£κ°μ΄ μ€νλ κ³³λ€λ μμ΅λλ€. νμ§λ§ νΉμ μλ£λ€μ λ€λ£° λΆμμ λͺ©μ μ±μ΄ λΆμ‘±νμ΅λλ€. λμκ° μλ£λ₯Ό μ€μ λ‘ μ΄λ€ λ°©μμΌλ‘ λΆμν΄μΌ νλμ§ μ κ·ΌνκΈ°κ° μ½μ§ μμμ΅λλ€. κ·Έλμ λμ€μ μΌλ‘λ μΈκΈ°κ° μλ νκ΅μ νλ‘μΌκ΅¬ μλ£λ₯Ό ν΅ν΄ 곡λΆν΄ λ³΄κΈ°λ‘ νμ΅λλ€.
μ°μ μλ£λ₯Ό λͺ¨μΌκΈ° μν΄ KBO ννμ΄μ§μ λ±λ‘λ μΌκ΅¬ μλ£λ₯Ό λͺ¨μΌκ³ 보기 μ’κ² μ 리νκΈ° μμνμ΅λλ€. λ€μ΄λ²μ κ°μ ν¬νΈμ¬μ΄νΈμλ μΌκ΅¬ μλ£κ° μλκ΅°μ. κ±°κΈ°μ μλ μΌκ΅¬ μλ£λ 2010λ μ΄μ μ μλ£λ μκΈ°μ κ·Έμͺ½μΌλ‘λ μμ νμ¬ λ°μ΄ν°λ₯Ό μΆκ°νλ € νμ΅λλ€. κ·Έλ¬λ λ€μ΄λ²μ μλ μλ£λ κ²°μΈ‘κ°μ΄ μκ³ , λΆμ ννκ±°λ λΆμ‘±ν κ²½μ°κ° λ§μμ 곡μμ μΈ KBO μ¬μ΄νΈλ§μ μ°Έμ‘°νμ¬ μλ£λ₯Ό λ§λ€μμ΅λλ€.
μ ν¬κ° μμ§νκ³ κ°κ³΅ν μλ£λ 2010λ λΆν° 2018λ μ¬μ€νμ κΉμ§μ KBO νλ‘μΌκ΅¬ λ°μ΄ν°κ° μμ΅λλ€. KBO_light μλ£λ 2010λ λΆν° 2018λ μ¬μ€νμ κΉμ§μ λ°μ΄ν°λ₯Ό ν©μΉ μλ£μ λλ€. μ΄ μλ£λ€μ μμΌλ‘λ μλ§λ€ κ³μ λ°μ΄νΈν μμ μ λλ€. μλ£λ ν¬λ‘€λ§μ ν΅ν΄ μμ§νκ³ λͺ¨λ μ 리ν λ€μμλ μ§μ λμΌλ‘ μλͺ»λ λΆλΆμ΄λ λΉ μ§ λΆλΆμ΄ μλμ§ νμΈνμ΅λλ€. μ΅μ’ μ μΌλ‘ νμΈν ν, csv νμΌλ‘ λ§λ€κ³ Rμμ κ²½κΈ°μ κ΄ν μ 보λ€μ ννκ³Ό μμ ν, μ μ, μ κ·μμ¦, μλ²κ²½κΈ°μ κ΅¬λΆ λ±μΌλ‘ μ΄μ λλμ΄μ λ§λ€μμ΅λλ€. μ΄λ¬ν κ³Όμ μ κ±°μ³ μλ£λ₯Ό μ 리νμ΅λλ€.
κΉνλΈμμ λ°μ΄ν°λ₯Ό λ€μ΄λ°κ±°λ μ¬μ©νμκΈ° μ΄λ €μ°μ λΆλ€μ "https://lopes.hufs.ac.kr/KBO/" κΈ°λ³Έ μ£Όμμ μ΄κ³ μΆμ νμΌ μ΄λ¦μ λΆμ¬μ Rμμ μ΄μ΄ μ¬μ©νμ€ μ μμ΅λλ€. μλ₯Ό λ€μ΄ 2010λ λΆν° 2018λ κΉμ§μ μ 체μλ£λ₯Ό μ½μ΄μ¨λ€κ³ νλ©΄ "KBO_light.csv"λ₯Ό μ μ£Όμμ λΆμ¬μ μλμ κ°μ΄ μ½κ³ μ¬μ©νμ€ μ μμ΅λλ€.
KBO.light.URL<-"https://lopes.hufs.ac.kr/KBO/KBO_light.csv"
KBO.light<-read.table(file = KBO.light.URL, header= TRUE, sep=",",stringsAsFactors = FALSE)
doosan_home<-KBO.light[KBO.light$λΉκ³ =="μ κ·μμ¦"&KBO.light$νν=="λμ°",]
doosan_away<-KBO.light[KBO.light$λΉκ³ =="μ κ·μμ¦"&KBO.light$μμ ν=="λμ°",]
mean(doosan_home$μμ νμ μ) #10λ
κ° λμ°μ΄ νμΌ λ νκ· μ€μ
mean(doosan_away$ννμ μ) # 10λ
κ° λμ°μ΄ μμ νμΌ λ νκ· μ€μ
νΉμ νμ μ°λμ λ°λ₯Έ μ΄λμ κ³Ό μ΄μ€μ μ λ³ν, μ°λλ³ ν κ°μ μλμ μ νΉμ μ°μμ μΈ ν¬μ€νΈμμ¦ μ§μΆ μ¬λΆ λ±μ νμΈν μ μμ΅λλ€. λν, μ μμ ν & μμ ν, μμ¦ μ 보 λ±μ ꡬλΆνμ¬ κ²½κΈ° μ 보λ₯Ό μ½κ² λ€λ£° μ μμΌλ©° λ€μν κΈ°λ‘λ€μ μκ°νν΄λ³Ό μ μμ΅λλ€.
μλμ μ½λλ 2010λ
λΆν° 2018λ
μ λ°κΈ°κΉμ§ μ μ²΄κ° μ μ₯λ KBO_lightνμΌμ μ½κ³ νΉμ νμ μ°λλ³ μ΄λμ κ³Ό μ΄μ€μ μ ꡬνκ³ κ·Έκ²μ κ·Έλ €λ³΄λ μ½λμ
λλ€. Runs.and.score ν¨μλ λ°μ΄ν°μ μνλ νμ΄λ¦μ μΈμλ‘ λ°μ ν΄λΉ νμ μ°λλ³ μ΄λμ κ³Ό μ΄μ€μ μ κ³μ°ν©λλ€. aggregate ν¨μλ₯Ό ν΅ν΄ ννκ³Ό μμ νμμμ λμ κ³Ό μ€μ μ λͺ¨μΌκ³ , κ°κ°μ κ²°κ³Όλ₯Ό μλ‘ λν΄ μ°λλ³ μ΄λμ κ³Ό μ΄μ€μ μ ꡬν©λλ€. μ΄λ κ² κ΅¬ν μ°λλ³ μ΄ λ,μ€μ μ νμ΄λ¦κ³Ό κ²½κΈ° μ°λκ° ν¨κ» λ°νλ©λλ€.
μ΄νμ μ½λλ μ 체νμ λμμΌλ‘ μ°λλ³ μ΄μ€μ μ κ΅¬ν΄ ggplot2ν¨ν€μ§λ₯Ό μ΄μ©ν΄ μκ°ννλ μ½λμ
λλ€.
install.package("ggplot2")
library(ggplot2)
KBO.light.URL<-"https://lopes.hufs.ac.kr/KBO/KBO_light.csv"
KBO.light<-read.table(file = KBO.light.URL, header= TRUE, sep=",",stringsAsFactors = FALSE)
#μ°λλ³ μ΄λ,μ€μ ꡬνλ ν¨μ
Runs.and.score<-function(x,y){#x=data,y=teamname
x$κ²½κΈ°μ°λ<-substr(x$Date,1,4)
team.data.home<-x[x$νν==y,]
team.data.away<-x[x$μμ ν==y,]
Runs.score.home.yearly <- aggregate(ννμ μ~κ²½κΈ°μ°λ,team.data.home,sum)
Runs.score.away.yearly <- aggregate(μμ νμ μ~κ²½κΈ°μ°λ,team.data.away,sum)
Runs.home <- aggregate(μμ νμ μ~κ²½κΈ°μ°λ,team.data.home,sum)
Runs.away <- aggregate(ννμ μ~κ²½κΈ°μ°λ,team.data.away,sum)
Total.Runs.score<-Runs.score.home.yearly$ννμ μ+Runs.score.away.yearly$μμ νμ μ
Total.Runs<-Runs.home$μμ νμ μ+Runs.away$ννμ μ
runs.change<-data.frame(Total.Runs.score=Total.Runs.score,Total.Runs=Total.Runs,year=Runs.score.home.yearly$κ²½κΈ°μ°λ,teamname=y)
return(runs.change)
}
allteam<-unique(KBO.light$μμ ν)[c(1:8,11,12)]
allteam.runs<-do.call(rbind,lapply(1:10,FUN =function(i){Runs.and.score(KBO.light,allteam[i])}))
#νκΈμ 보μ΄κ² νκΈ° μν μ½λ
theme_set(theme_gray(base_family='NanumGothic'))
g<-ggplot(data = allteam.runs,aes(x=year,y=Total.Runs,fill= teamname,color= teamname))
g+geom_point(stat="identity")+theme(axis.text.x= element_text(angle=90, hjust=1))+facet_wrap(~teamname)
νΉμ μλ£λ₯Ό 곡κ°νλλ° λ¬Έμ κ° μμ κ²½μ°μλ μ°λ½μ μ£Όμλ©΄ μ¦μ μμ νλλ‘ νκ² μ΅λλ€. λν μλ£μ νλ¦° κ³³μ΄ μμΌλ©΄ issuesλ‘ μ¬λ €μ£Όμλ©΄, νμΈν λ€μ κ³ μΉλλ‘ νκ² μ΅λλ€.