Date:     Updated:

카테고리:

태그: ,


💡 R을 처음 배우기 위해 공부한 책입니다. 책에서 공부한 내용을 정리하고, 이를 기반으로 직접 문제를 만들어 풀이해보는 식으로 학습했습니다. KBO, MLB 야구 기록들을 csv 파일로 크롤링하여 문제에 사용했고, 야구 데이터 패키지인 Lahman을 토대로 문제를 만들기도 했습니다.


책 소개

Do it! 쉽게 배우는 R 데이터 분석


01, 02 챕터에서는 R에 대한 개괄적 설명, R설치 및 세팅에 대해 다루고 있습니다. 해당 챕터는 건너 뛰고, 본격적인 시작인 03 챕터부터 내용을 정리했습니다.


00. 팁

tip1. invalid graphics state 오류가 뜬다면? dev.off()를 입력하면 해결된다.

tip2. Lahman 패키지(MLB 데이터베이스) 사용법 https://cinema4dr12.tistory.com/1098

install.packages("Lahman")
library(Lahman)

tip3. 간혹 어떤 패키지는 다른 패키지를 활용하는 의존성(dependency)이 있어서 함께 설치해야만 정상적으로 작동한다. 그럴 경우 다음과 같이 코드를 작성하자.

install.packages("ggplot2", dependencies=T)


03. 변수, 함수, 패키지 이해하기

03-1. 변수 이해하기

변수(Variable)는 다양한 값을 지니고 있는 하나의 속성이다. 데이터는 변수들의 덩어리라고 할 수 있다. 반면에 상수(Constant)는 고정된 값을 지니고 있다. 변수와 달리 분석 대상이 아니다.

R에서 변수를 만들 때에는 <-를 사용한다. =를 사용해도 되긴 하지만, =가 다른 기능도 하기 때문에 헷갈리지 않게 그냥 화살표를 쓰는 편이 낫다.

a <- 2 #변수 지정
b <- 2.5

a #2
b #2.5
a*b #5
a+b #4.5

변수에는 여러 값을 넣을 수도 있다. c()함수가 그러한 기능을 한다. seq()함수로도 연속 값을 출력할 수 있다. by파라미터는 간격을 설정한다.

#콤마로 구분하기
var1 <- c(1, 2, 5, 7, 8) 
var1
# [1] 1 2 5 7 8

#콜론으로 연속값 만들기
var2 <- c(1:7) 
var2
# [1] 1 2 3 4 5 6 7

#seq()함수 이용
var3 <- seq(1, 9, by=2)
var3
# [1] 1 3 5 7 9

변수끼리 연산할 수도 있다. 이 때 연속값을 서로 연산하려면 길이가 같아야 한다.

var1+2
#[1]  3  4  7  9 10

var1+var3
#[1]  2  5 10 14 17

문자로 된 변수 역시도 만들 수 있다. 마찬가지로 c()함수를 이용하면 여러 개의 문자로 구성된 변수를 만들 수 있다. 하지만 문자 변수는 연산할 수 없다!

str1 <- c("a", "b", "c")
str1
#[1] "a" "b" "c"


03-2. 함수 이해하기

데이터 분석은 함수를 이용해서 변수를 조작하는 일이라고 할 수 있다. 이 때 괄호안에 파라미터(parameter)를 조정해서 다양한 결과값을 얻을 수 있다. 다양한 함수를 실행해보자.

x <- c(1,2,3,4,5)
mean(x) #평균
max(x) #최댓값
min(x) #최솟값

str2 <- c("hello", "I", "am", "heejun")
paste(str2, collapse=" ") #문자를 합치는 함수. collapse 파라미터의 구분자로 여러 문자를 합친다.
# [1] "hello I am heejun"

함수의 결과물로 새 변수를 만들 수도 있다.

str2_paste <- paste(str2, collapse=" ")
str2_paste
#[1] "hello i am heejun"


03-3. 패키지 이해하기

하나의 패키지 안에는 다양한 함수가 들어 있다. 일례로 ggplot2에는 ggplot(), qplot(), geom_histogram() 등 수십 가지 그래프 관련 함수가 들어있다.

ggplot2 패키지를 설치해보자.

install.packages("ggplot2") #패키지 설치
library(ggplot2) #패키지 로드

#qplot()함수로 빈도 막대 그래프를 그려보자.
x <- c("pitcher", "pitcher", "catcher", "outfielder")
qplot(x)
![Untitled](https://user-images.githubusercontent.com/115082062/200174989-a487e552-bbd8-4c07-8a98-b1b7173795b8.png)

또한 패키지는 여러 예제 데이터를 제공한다. mpg(Mile Per Gallon) 데이터는 미국 환경 보호국에서 공개한 자료로, 1999년~2008년 사이 미국에서 출시된 자동차 234종의 연비 정보를 담고 있다.

이제 mpg 데이터로 그래프를 그려보자. data 파라미터에 mpg를 지정하고, x 파라미터에 다양한 변수들을 지정하자.

qplot(data=mpg, x=hwy)
qplot(data = mpg, x=cty)
qplot(data = mpg, x=drv, y=hwy)

#geom파라미터로 그래프 모양 변경 가능.
qplot(data = mpg, x= hwy, y= drv, geom = "line") #선 그래프
qplot(data= mpg, x= drv, y= hwy, geom = "boxplot", colour = drv)#drv별 색 표현, 상자 그래프
![1](https://user-images.githubusercontent.com/115082062/200175070-af16c551-6168-4a08-bbaa-7935c805e5e0.jpg) drv 변수 별로 색이 다른 상자 그래프.

문제.

한 야구팀의 선발투수 다섯 명의 승 수와 패 수는 다음과 같다. 
1)각 선수의 승 수를 담는 변수와 패 수를 담는 변수를 만들어라. 
2)각 선수의 승률을 나타내는 변수를 만들어라. 
3)모든 선수의 승률 전체 평균을 나타내는 변수를 만들어라. 
4)각 선수의 승률을 막대그래프로 나타내라.
#1선발: 15승 4패
#2선발: 17승 9패
#3선발: 8승 9패
#4선발: 7승 4패
#5선발: 6승 8패

💡 .

#1)
win<- c(15,17,8,7,6)
lose<- c(4,9,9,4,8)

#2)
win_pro <- win/(win+lose)

#3)
win_pro_mean <- mean(win_pro)

#4)
qplot(y=win_pro) + geom_col()
![2](https://user-images.githubusercontent.com/115082062/200175543-02271cf5-77ec-46f6-b4d0-ff7183fee0fc.jpg)

태그: ,

카테고리:

업데이트: