[R] Do It R 1편 변수, 함수, 패키지 이해하기
카테고리: R
💡 R을 처음 배우기 위해 공부한 책입니다.
책에서 공부한 내용을 정리하고, 이를 기반으로 직접 문제를 만들어 풀이해보는 식으로 학습했습니다.
KBO, MLB 야구 기록들을 csv 파일로 크롤링하여 문제에 사용했고,
야구 데이터 패키지인 Lahman
을 토대로 문제를 만들기도 했습니다.
책 소개
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)
또한 패키지는 여러 예제 데이터를 제공한다. 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)각 선수의 승 수를 담는 변수와 패 수를 담는 변수를 만들어라.
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()