Tải bản đầy đủ (.pdf) (76 trang)

Phân tích dữ liệu không gian bằng ngôn ngữ R

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.46 MB, 76 trang )

Spatial Analysis using R
목차
Spatial Analysis using R .............................................................................................................................. 1
목차 ................................................................................................................................................................. 1
Ch 1
1.

2.

3.

4.

5.

R의 기초 ......................................................................................................................................... 2
R 시작하기 .....................................................................................................................................................2
1.1.

R이란? .............................................................................................................................................................................. 2

1.2.

R 프로그램의 설치와 시작.................................................................................................................................... 3

1.3.

R Package 설치 ........................................................................................................................................................... 3

1.4.


R 맛보기 예제들 ......................................................................................................................................................... 6

1.5.

스크립트(Script)와 RStudio ................................................................................................................................ 12

1.6.

도움말 얻기................................................................................................................................................................ 17

1.7.

R의 표현 ...................................................................................................................................................................... 21

데이터 형식 ................................................................................................................................................. 23
2.1.

데이터 형식의 종류 ............................................................................................................................................... 23

2.2.

벡터(Vector)................................................................................................................................................................ 25

2.3.

행렬(Matrix)과 배열(Array) ................................................................................................................................. 30

2.4.

리스트(List) ................................................................................................................................................................. 35


2.5.

데이터프레임(Data Frame) .................................................................................................................................. 36

2.6.

Factors .......................................................................................................................................................................... 40

열거형 다루기 ............................................................................................................................................. 45
3.1.

첨자(Indexing) ........................................................................................................................................................... 45

3.2.

[ ], [[ ]], $의 차이 ..................................................................................................................................................... 50

3.3.

조건식과 매칭 ........................................................................................................................................................... 53

3.4.

데이터프레임의 부분 추출 ................................................................................................................................. 55

3.5.

데이터프레임의 열의 추가와 제거................................................................................................................. 58


유용한 R 함수들......................................................................................................................................... 59
4.1.

General ......................................................................................................................................................................... 59

4.2.

Built-in constants ..................................................................................................................................................... 61

4.3.

Maths ............................................................................................................................................................................ 61

4.4.

Graphical ..................................................................................................................................................................... 61

4.5.

Fitting / regression / optimisation ................................................................................................................. 62

4.6.

Statistical...................................................................................................................................................................... 63

연습문제 ...................................................................................................................................................... 64

부록 – 실습 프로그램 설치 .......................................................................................................................68
참고 문헌 ......................................................................................................................................................76


Chulmin Jun


2

Ch 1 R 의 기초

Ch 1 R의 기초


공간 분석을 위해 R 을 배우는 이유에 대해 알아본다.



R 과 R 의 패키지를 설치하고 실행하는 법을 배운다.



간단한 예제를 통해 R 에서의 표현 방법을 배운다.



R 언어의 표현 방법과 다양한 데이터 형식에 대해 예시를 통해 배운다.

1. R 시작하기
1.1. R이란?


통계적 계산과 그래픽에 특화되어 있는 언어




전세계적으로 널리 사용하는 무료 오픈소스 언어 (GNU / GPL)



Ross Ihaka와 Robert Gentleman에 의해 S-PLUS의 무료 버전 형태로 1993년부터 소개됨



1997년 이후부터는 R Development Core Team에 의해 R Project가 진행



사용자가 제작하여 기여하는 다양한 패키지(package)로 인해 기능이 지속적으로 확장



프로그래밍 기능, 우수한 가시화 및 분석 기능 등 제공



통계 뿐 아니라 빅데이터, 데이터마이닝, 공간분석 등 다양한 분야의 연구 및 산업계에서
사용되는 강력한 툴이 됨

Chulmin Jun


1. R 시작하기


1.2. R 프로그램의 설치와 시작
먼저 부록의 R 프로그램 설치 방법을 참고하여 설치한다.



바탕화면의 “R” 아이콘을 더블클릭하거나 [모든 프로그램][R]에서 프로그램을 시작한다.



다음과 같은 RGui 창이 나타난다.

1.3. R Package 설치

1.



R을 설치할 때는 기본 패키지들이 함께 인스톨된다.



그러나 필요할 때 마다 사용자들이 만든 많은 패키지들을 설치할 수도 있다.



사용자 패키지들은 예제 데이터를 함께 가지고 있는 경우가 많다.



본 연습을 위해서 “ISwR” (Introductory Statistics with R) 패키지를 설치해 보자.


메뉴에서 [패키지들][패키지(들) 설치하기…]를 선택한다.

 또는 명령창에 다음과 같이 입력해도 된다.
> install.packages("ISwR", dependencies=TRUE)


‘dependencies=TRUE’는 설치하려는 패키지와 연관된 패키지를 함께 설치하라는 의미이다.
‘depend=T’, 또는 ‘dep=T’로 줄여서 써도 된다.

Chulmin Jun

3


4

Ch 1 R 의 기초

2.

HTTPS CRAN mirror 사이트에는 ‘Korea’가 보이지 않는다. 하단의 (HTTP mirrors)를 선택하면 Korea
사이트가 두 개 보인다. 이 중 하나를 선택한다. 이어서 Package 리스트에서 ‘ISwR’을 선택한다.

3.

인스톨후에는 다음 두 가지 방법 중 하나를 이용하여 필요한 패키지를 불러온다.
(1)

“library(패키지명)”를 명령프롬프트에 입력한다. (예: >library(ISwR)


(2)

메뉴의 [패키지][패키지 불러오기]에서 패키지명을 선택한다.

Chulmin Jun


1. R 시작하기



Package 목록



R CRAN 홈페이지( “Packages”를 선택하면 package 들을 배포순 또는
알파벳 순서로 볼 수 있다.



R 홈페이지의 ‘Task View’를 이용하면, package 들이 분야에 따라 분류된 것을 볼 수 있다.



‘Spatial’ 분야의 패키지들은 어떤 것들이 있는지 살펴 보자



패키지의 주기적인 업데이트와 버전 정보




패키지의 주기적 업데이트
update.packages()



최신의 안정적인 버전에 관한 정보
View(news())

Chulmin Jun

5


6

Ch 1 R 의 기초

1.4. R 맛보기 예제들
(1) 간단한 그래프 그리기


다음을 명령 프롬프트에 쓰고 엔터를 친다.
> plot(rnorm(1000))






이 명령은 표준정규분포에서 랜덤하게(rnorm = random normal) 1000개의 숫자를 가져온 후
plot을 한다.
plot 명령은 새로운 pop-up 창에서 결과를 보여준다.
아직은 명령에 대한 의미를 자세히 알 필요가 없다.

(2) 단순 계산


간단한 산술계산을 다음과 같이 할 수 있다.
> 2 + 2
[1] 4

> 2^3
[1] 8

> 1/2
[1] 0.5

> 3-2*2+4
[1] 3

Chulmin Jun


1. R 시작하기

(3) 함수의 이용
다음과 같이 내장된 함수를 사용할 수도 있다. (𝑒𝑒 −2 )




> exp(-2)
[1] 0.1353353



결과값 앞의 [1]은 결과가 리스트(벡터)로 되어 있을 때, 몇 번째 숫자인지를 나타낸다. 다음
예를 보면 이해할 수 있다.
> rnorm(15)
[1] -1.00026964 -1.95352657 0.48817170 -0.69520362 -1.53144629 0.02412822
[7] 0.88846373 0.50432291 -1.94453418 0.49900102 -0.26338447 0.09827436
[13] -0.02055363 -1.25706097 -0.14944299




위의 예는 정규분포에서 15개의 숫자를 랜덤하게 프린트하는 예이다.

다음을 각자 계산해 보자
𝑠𝑠𝑠𝑠𝑠𝑠(𝜋𝜋) ,

�2,

𝑒𝑒1 ,

𝑙𝑙𝑙𝑙𝑙𝑙10 10 ,

𝑙𝑙𝑙𝑙𝑙𝑙2 8 ,


𝑙𝑙𝑙𝑙𝑙𝑙𝑒𝑒 10 ,

|−3|,

5!,

5
� �
2

(4) 할당(Assignment)


프로그래밍 언어에서와 마찬가지로 변수에 이름을 주어 값을 저장할 수 있다.



할당 연산자는 “=”, “<-“, “<<-“ 를 사용할 수 있으며, 모두 같은 의미이다.



연산자 왼쪽에 변수명을, 오른쪽에는 부여하고자 하는 값을 쓴다.
> x
> x
[1]
> x
[1]




<- 2
2
+ x
4

변수(객체)이름을 지을 때는 알파벳, 숫자, “.”(dot), “_”(under score)를 함께 사용할 수 있으나, 수학 연산자 +, -, *, /, ^
는 함께 사용할 수 없다.



첫 문자로 숫자와 “_”(under score)는 사용할 수 없다.



“.”으로 시작하는 변수명은 특별한 뜻을 가지므로 피하는 것이 좋다.



변수명은 case-sensitive하다. 즉, 대소문자가 서로 다른 의미이다.



어떤 이름은 이미 시스템에서 사용하고 있으므로 피해야 한다. (예, diff, df, pt, F, T…)



한 문자로 된 변수명(예: c, g, t, D, K 등)은 되도록 피하는 것이 좋으며, 의미를 부여하는 것이 좋다.




예를 들어 height.1yr로서 1살 아이의 키를 나타낼 수도 있다.

Chulmin Jun

7


8

Ch 1 R 의 기초
> score.eng = 85
> score.eng
[1] 85
> score.eng + 10
[1] 95
> score.eng
[1] 85
> score.eng = score.eng + 10
> score.eng
[1] 95
> e = exp(1)
> e^2
[1] 7.389056
> print(e)
[1] 2.718282



할당된 객체가 많아지면 시스템 메모리를 많이 사용하므로 프로그램 성능이 느려질 수 있다.
이 때는 rm( ) 함수를 사용해서 불필요한 변수를 지울 수 있다.




먼저 ls( )를 사용하면 현재 사용하고 있는 객체들을 나열할 수 있다.
> ls()
[1] "e"
"score.eng" "x"
> rm(e); rm(x); rm(score.eng)

(5) 벡터(vector)


Vector는 순차적으로 묶인 동일 타입의 데이터 구조, 즉, 일차원 배열(array)이다.



Vector는 다음과 같이 만들 수 있다.
> weight <- c(60, 72, 57, 90, 95, 72)
> weight
[1] 60 72 57 90 95 72



Vector를 만들 때는 c(…)를 사용하는데, 이 때 c는 combine의 의미이다.



다음과 같이 height vector를 만든 후, weight와 height를 다시 c로 묶어서 bodysize라는
vector로 저장할 수도 있다.
> height <- c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91)

> bodysize <- c(weight, height)
> bodysize
[1] 60.00 72.00 57.00 90.00 95.00 72.00 1.75 1.80 1.65 1.90 1.74 1.91



두 vector가 같은 길이(length)라면 일반 숫자 연산과 같이 할 수도 있다.



다음과 같이 BMI(Body Mass Index, 체질량 지수)를 계산해 보자.
> bmi <- weight/height^2
> bmi
[1] 19.59184 22.22222 20.93664 24.93075 31.37799 19.73630

※ BMI가 18.5이하면 저체중, 18.5~24.9는 정상, 25.0~29.9는 과체중, 30.0 이상은 비만이라고 한다. 각자, 자신의 BMI를
계산해 보자. 이 때, 체중은 kg, 키는 meter단위로 넣는다.

Chulmin Jun


1. R 시작하기



𝑥𝑥̅ = ∑ 𝑥𝑥𝑖𝑖 ⁄𝑛𝑛을 이용하여 weight의 평균을 구해보자.

> sum(weight)
[1] 446
> sum(weight)/length(weight)

[1] 74.33333




이것을 xbar 변수에 저장하고, 표준편차 SD = �(∑(xi − x� )2 )⁄(n − 1)를 구해보자.
다음과 같이 한 단계씩 실행해 본다.

> xbar <- sum(weight)/length(weight)
> weight - xbar
[1] -14.333333 -2.333333 -17.333333 15.666667 20.666667 -2.333333
> (weight - xbar)^2
[1] 205.444444 5.444444 300.444444 245.444444 427.111111 5.444444
> sum((weight - xbar)^2)
[1] 1189.333
> sqrt(sum((weight - xbar)^2)/(length(weight) - 1))
[1] 15.42293

※ 이전 명령은 키보드의 up-arrow(위 화살표)를 이용하여 쉽게 다시 호출할 수 있다.

(6) 통계 함수의 이용


R은 통계를 위한 프로그래밍 언어이다. 따라서 위와 같은 연산은 이미 구축되어 있으므로
간단하게 다음과 같이 실행하면 된다.
> mean(weight)
[1] 74.33333
> sd(weight)
[1] 15.42293


> mean(bmi)
[1] 23.13262
> sd(bmi)
[1] 4.493165



BMI 치수가 20~25면 정상이라고 가정하자. 우리가 가진 데이터의 평균(23.13262)이
정상인지를 알고자 한다. 6명의 BMI 치수 샘플이 정규분포에서 추출되었다고 가정할 때,
이들이 평균 22.5인지 알고자 한다면 이 때는 t test를 이용하면 된다.
> t.test(bmi, mu=22.5)
One Sample t-test
data: bmi
t = 0.3448, df = 5, p-value = 0.7442
alternative hypothesis: true mean is not equal to 22.5
95 percent confidence interval:
18.41734 27.84791
sample estimates:
mean of x
23.13262



여기서 t-test에 대해서 간단히 알아보자.



mu는 Greek letter μ를 의미하며, 통계학에서는 일반적으로 이론적인 평균(theoretical mean)을

Chulmin Jun


9


10

Ch 1 R 의 기초

의미한다.

 가설검정 절차


H0: μ= 22.5



유의수준 α = 0.05라고 하자.



기각역: σ가 알려져 있지 않고 n<30이므로 자유도가 6-1=5인 t분포를 이용한다. t분포표에서 t0.025(5)=2.571이다. 기



각역은 t < −t α/2 = −2.571와 t > t α/2 = 2.571이다.



계산한 t값이 기각역에 포함되지 않으므로 평균이 22.5가 아니라고 할 수 없다.


𝑡𝑡 =

H1: μ≠ 22.5

� −𝜇𝜇
𝑋𝑋
= 23.13−22.5
= 0.3449
𝑆𝑆⁄√𝑛𝑛
4.49⁄�6

 p-value


p-value는 α가 얼마일 때 현재의 표본평균 23.13으로 H0을 기각할 수 있는지를 의미한다.



p-value는 표본으로 계산한 검정통계치(test statistic)로 H0을 기각할 수 있는 가장 작은 α값을 의미한다.



즉, p-value는 H0가 옳다는 가정하에서 구한 검정통계치보다 더 극단적인(H0을 기각할 수 있는 방향에 놓여 있는) 값
이 검정통계치로 나올 확률이다.



앞의 예에서는 실제 평균이 22.5라는 가정하에서 표본의 평균이 23.13이상이거나 반대 방향으로 그 이하로 나올 확
률(또는 t>0.3449 또는 t<-3.3449일 확률)인 p-value가 74%정도로 나왔다.




즉, α=0.74 정도로 해야만 표본평균 23.13으로 H0을 기각할 수 있다는 의미이므로, 23.13으로 H0을 기각할 수 없다.



다시말해, 유의수준 α=0.05라면 p-value ≥ α이므로 H0을 기각할 수 없다.

 신뢰구간



한편, t분포표에서 tα/2 =t0.025(5)=2.571이므로 평균 BMI의 95% 신뢰구간은 다음과 같다.



= 23.13 ± 4.72 = (18.42, 27.85)

주어진 표본은 위 신뢰구간이 μ를 포함한다고 95% 신뢰할 수 있다.



즉, 주어진 표본은 위 신뢰구간이 μ를 포함하는 95%의 표본 중 하나이거나, 신뢰구간이 μ를 포함하지 않는 5%의

𝑥𝑥̅ ± 𝑡𝑡𝛼𝛼 (𝑛𝑛 − 1)
2

𝑠𝑠


√𝑛𝑛

= 23.13 ± 2.571

4.49
√6

표본 중 하나이다.


이 신뢰구간은 지나치게 넓으므로 실제 μ에 대한 정보를 얻기가 힘들다.

 95% 신뢰구간의 해석


특정한 방법으로 95% 신뢰구간을 계산하였는데 같은 모집단에서 같은 크기의 표본을 반복 추출하여 같은 방법으
로 신뢰구간을 반복 계산하면 95%의 결과에서 올바른 결론을 주고 5%의 결과에서 잘못된 결론을 준다.

Chulmin Jun


1. R 시작하기

(7) 그래프(Graph)


R은 강력한 그래프 기능을 가지고 있다.




R에는 여러가지 저수준(low level) 그래픽 함수들과, 저수준 그래픽 함수의 기능을 모아 하나의
완성된 그래프를 그릴 수 있는 고수준(high level) 그래픽 함수가 있다.



고수준 그래픽 함수로는 기본적으로 plot( ) 함수가 있다.



weight와 height의 관계를 보기 위해 다음과 같이 입력해 보자.
> plot(height,weight)



파라미터들을 사용해서 사용자가 원하는 모양으로 그래프를 바꿀 수도 있다. 다음은
pch(plotting character)를 이용해서 삼각형 점으로 바꾼 것이다.
> plot(height, weight, pch=2)

정상적인 BMI를 약 22.5라고 한다면 정상적인 몸무게는 약 weight ≈ 22.5 × height 2 가 될
것이다. 다음과 같이 키에 따른 정상적인 몸무게를 직선으로 표시하면 해당 자료의 몸무게가
정상 범주에서 얼마나 벗어나는지 알 수 있다.



> hh <- c(1.65, 1.70, 1.75, 1.80, 1.85, 1.90)
> lines(hh, 22.5 * hh^2)



여기에서 기존의 height 벡터를 쓰지 않고 hh를 새로 정의한 이유는 두 가지 이다. 첫째, 등간격의 키를 사용함으로

써 관계를 더 명료하게 보이게 하기 위함이다. 두번째 이유는 기존 height는 순서대로 되어 있지 않기 때문이다.

Chulmin Jun

11


12

Ch 1 R 의 기초

1.5. 스크립트(Script)와 RStudio


우리는 지금까지 R Console에 라인 단위로 명령을 입력하였다. 그러나 문제가 복잡해질수록
라인별로 입력하는 것 보다는 스크립트를 쓰는 것이 편리하다.



스크립트는 R 코드의 모임이다.



스크립트는 에디터를 이용해서 작성, 저장, 실행할 수 있다. 에디터를 이용하면 스크립트를
작성하면서 하나, 또는 그 이상의 명령들을 R로 보내서 수행시킬 수 있다. 마치 prompt에서
명령들을 입력하는 것과 동일한 효과가 된다.



또한 편집하고, 재사용하며, 다른 사람과 공유할 수도 있다. 따라서, 문제가 복잡해 질 수록, R

코드를 현재까지와 같이 커맨드 라인단위로 입력하는 것 보다는 에디터를 이용해서
스크립트로 저장하는 것을 권장한다.



스크립트를 생성, 편집하는 방법은 다음 세 가지가 있다.



R 에서 기본적으로 제공하는 빌트인(Built-in) 에디터를 이용



일반 텍스트 에디터를 이용 (예: Notepad, Notepad++, EditPlus 등)



IDE(Integrated Development Environment)를 이용 (Tinn-R, RStudio 등)

(1) R의 기본 제공 에디터
① 스크립트 만들기


먼저 [파일] > [작업 디렉토리 변경…]을 하여 자신이 스크립트를 저장하거나 불러올 기본
디렉토리를 정한다. (예: “D:\R-Ex”). 그렇지 않으면 기본 설정된 디렉토리가 사용된다.



[파일] > [새 스크립트]를 선택한다.




빈 창이 열리면, 아래와 같이 두 줄을 입력하고 적당한 이름(예: test.R)을 주어 저장한다.
(확장자 R은 자동으로 붙는다.)
m <- matrix(1:12, 3, byrow=T)
m

Chulmin Jun


1. R 시작하기
※ matrix(1:12, 3, byrow=T)는 1~12의 연속된 숫자(벡터)를 이용해서 3행으로 이루어진 행렬을 만들라는 의미이
다. byrow=T는 행단위로 숫자를 채우라는 의미이다.
※ 이를 생략하면, R에서는 다음과 같이 열 단위로 숫자가 채워진다.

> matrix(1:12, 3)
[,1] [,2] [,3] [,4]
[1,]
1
4
7 10
[2,]
2
5
8 11
[3,]
3
6
9 12


② 스크립트 불러와서 실행하기


툴바의 스크립트 열기 버튼(



첫 줄에 마우스를 위치하거나 첫 줄을 선택한 후,



이어서 두번째 줄도 동일하게 실행한다.

)이나 [메뉴] > [스크립트 열기]로 저장한 스크립트를 연다.
툴을 누르거나 ‘Ctrl-R’을 누른다.

> m <- matrix(1:12, 3, byrow=T)
> m
[,1] [,2] [,3] [,4]
[1,] 1 2 3
4
[2,] 5 6 7
8
[3,] 9 10 11 12

③ source() 함수로 불러오기


스크립트를 불러오는 또 다른 방법으로는 source() 함수를 쓰는 것이다. 이는 sink()의 반대로서
명령을 파일에서 읽을 수 있게 한다.




예를 들어 현재 디렉토리에 “test.R”라는 파일이 있고 이 파일에는 다음과 같이 두 개의 명령이
입력되어 있다고 가정하자.
m <- matrix(1:12,nrow=3,byrow=T)
m



콘솔에서 다음과 같이 입력한다.
> source("mysource.txt", echo=T)



그러면 화면에 아래와 같이 출력된다. 여기에서 echo=T는 연산을 하면서 결과를 화면에
출력하는 옵션이다.
> m <- matrix(1:12,nrow=3,byrow=T)
> m
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 5 6 7
[3,] 9 10 11

[,4]
4
8
12

Chulmin Jun


13


14

Ch 1 R 의 기초

(2) 외부 에디터의 이용


물론 notepad와 같은 기본 에디터를 이용할 수도 있지만, 코딩을 위해 편리한 기능을
제공하는 에디터를 이용하는 것이 좋다.



예를 들어, Notepad++와 같은 에디터를 이용할 수 있다. Notepad++는 아래의 사이트에서
무료로 얻을 수 있다.


/>


Notepad++는 R을 포함해서 여러가지 언어(C, C++, C#, Java, Python 등)에 맞는 편집 환경을
제공한다. 언어를 선택하면 해당 언어에서 제공하는 함수 등의 명령어가 다른 색으로
강조되어 편집시에 매우 도움이 된다.



다음은 Notepad++의 화면이다. 메뉴의 [언어] 항목 중 ‘R’을 선택하면 된다.




에디터에서 편집한 내용을 복사하여 R의 명령줄에 붙여 넣기를 하면 된다.



만약 Notepad++에서 편집한 내용을 자동으로 R과 연동하여 실행되도록 하려면 추가적인
프로그램이 필요하다. 이는 “NppToR” 이라는 소프트웨어로서 아래의 사이트에서 무료로
다운받아 설치할 수 있다.


/>
Chulmin Jun


1. R 시작하기

(3) RStudio의 이용


Notepad++와 NppToR을 이용해서 R와 에디터를 연동하여 사용할 수도 있으나, 번거로울 수
있다.



R 코드를 편집하는 가장 편리한 방법은 IDE(통합 개발 환경)을 사용하는 것이다.




여기에는 문서 편집기와 코드 인터프리터가 통합되어 있고, RGui에는 없는 다양한 기능들이
포함되어 있어 코딩을 편리하게 할 수 있다.



이러한 기능중에는 자동 코드 완성, 라이브러리나 함수의 리스트, 명령들의 강조, 디버깅 툴 등
다양한 것들이 있다.



R 프로그램을 위한 IDE의 대표적인 것들로는 Tinn-R과 RStudio가 있다. 본 교재에서는
RStudio를 사용할 것이다.





참고로 Tinn-R은 아래의 사이트에서 무료로 다운받을 수 있다.



/>
아래의 사이트에서 RStudio를 다운로드 받아 설치한다. 여기에서 무료 버전인 RStudio Desktop
버전을 다운로드 한다.
www.rstudio.com



다음은 RStudio의 화면이다.


Chulmin Jun

15


16

Ch 1 R 의 기초



여기에서 앞에서 저장했던 test.R 파일을 불러와 보자. [File] > [Open File]이나 툴바의
버튼을 이용한다.



그 다음에는 각 행에 커서를 위치시키고 [Run] 버튼을 각 행에 대해 누르던지, 두 행을
마우스로 선택한 후 [Run] 버튼을 누른다. 단축키로는 Ctrl+R 또는 Ctrl+Enter를 누르면 된다.
아래와 같이 결과창에 나오는 것을 볼 수 있다.



스크립트를 새로 만들 때에는 아래와 같이 툴버튼을 이용하거나 Ctrl-Shift-N을 누른다.



새로운 창에 아래와 같이 입력해 보자. matrix 함수를 다 완성하기 전에 아래와 같이 사용법과
함께 matrix 함수의 종료가 열거된다.




여기에서 <Tab> 키를 눌러보자. 함수 이름이 완성되고, 함수의 매개 변수를 입력할 수 있다.
매개 변수의 형태가 툴팁에 떠 있기 때문에 이를 보면서 코딩할 수 있다.



좌 하단의 콘솔 창에서 직접 명령줄 방식으로 입력해도 된다.



>?mean과 같이 명령에 대한 도움말을 입력하면 새로운 웹브라우저가 아닌, 우측 하단 부분에 표시된다.

Chulmin Jun


1. R 시작하기

1.6. 도움말 얻기
(1) 도움말 웹사이트


R은 CRAN 웹 브라우져를 통해 도움말을 제공한다.



help.start()라고 명령을 입력하면 아래와 같은 도움말에 대한 첫 페이지가 인터넷 창으로
열린다. 여기에는 R의 설치 등 다양한 링크들이 있다.
> help.start()

(2) 도움말을 얻는 여러가지 방법

① 기본 도움말


함수나 명령들에 대해 이름을 알고 있으면서 사용법, 예제 등의 도움을 원하면 prompt에 다음
두 가지 중 하나를 입력하면 된다.
> help(mean)
> ?mean



이렇게 하면 mean( ) 함수의 도움말이 웹페이지를 통해 보여진다.



만약 특수 문자나 연산자 등에 대해 알고 싶다면 큰 따옴표나, 작은 따옴표로 둘러 싸야 한다.
> ?"<-"
> help("<-")

Chulmin Jun

17


18

Ch 1 R 의 기초

② 키워드 찾기 기능



R에서 어떤 함수나 명령 이름을 정확히 알지 못하고 부분만 알고 있거나 어떤 키워드로 관련
함수들을 찾고자 할 때 사용할 수 있는 방법이 몇 가지 있다.



예를 들어 “mean”이라는 단어가 들어간 관련 명령들에 대해 알고 싶은 경우 다음 두 가지 중
하나를 입력하면 된다.
> ??mean
> help.search("mean")

③ 특정 패키지내의 도움말


기본 패키지(base)내의 도움말은 help(함수명)이나 ?함수명을 이용하지만 특정 패키지 내에서
찾고자 할 때는 “?package명::함수명”을 이용한다.



예를 들어, stats 패키지의 kmeans라는 함수에 대한 도움말을 얻고자 한다면 아래와 같이
입력한다.
?stats::kmeans

Chulmin Jun


1. R 시작하기

④ apropos()



“mean”이 들어간 명령의 리스트만을 간단하게 원한다면 명령 프롬프트에 다음과 같이
입력하면 된다.
> apropos("mean")
[1] ".colMeans"
[5] "mean"
[9] "mean.POSIXct"

".rowMeans"
"mean.Date"
"mean.POSIXlt"

"colMeans"
"kmeans"
"mean.default"
"mean.difftime"
"rowMeans"
"weighted.mean"

⑤ 예제보기


어떤 함수의 예제만을 보기 원한다면 다음과 같이 입력하면 된다. 이렇게 하면 새 창을
띄우지 않고 바로 콘솔에서 표시해 준다.
> example(mean)
mean> x <- c(0:10, 50)
mean> xm <- mean(x)
mean> c(xm, mean(x, trim = 0.10))
[1] 8.75 5.50




이는 ?mean으로 보여지는 웹 도움말의 하단에 있는 내용과 같다.

⑥ 함수의 매개 변수(argument) 보기


어떤 함수의 매개 변수만을 간단하게 보기 원한다면 “args(함수명.default)”를 입력하면 된다.



기본인자(default argument)값을 가지고 있는 함수의 경우는 키워드=기본값 정보를 상세하게
나타내준다.
> args(mean.default)
function (x, trim = 0, na.rm = FALSE, ...)
NULL



예를 들어, mean 함수에서 세번째 인자를 쓰지 않았다면 na.rm=FALSE를 입력한 것과 같다는
뜻이다. 만약 결측값(NA)을 제거하고 평균을 구하려면 명시적으로 na.rm=TRUE, 또는
na.rm=T를 입력해야 한다.

Chulmin Jun

19


20

Ch 1 R 의 기초


⑦ Package에 대한 정보 얻기


어떤 package에 대한 정보를 얻기 원한다면 ‘help(package=패키지명)’과 같이 입력하면 된다.



아래 예는 앞에서 설치한 ‘ISwR’ 패키지에 대한 도움말을 보여준다.
> help(package=ISwR)

※ R은 case sensitive, 즉, 대소문자를 구분한다. 따라서 “ISwR”을 입력할 때 대소문자를 정확하게 입력해야 한다.



아래 예는 앞으로 우리가 다룰 공간 데이터에 대한 “sp” package에 대한 정보를 보여준다.
> help(package=sp)



아마 대부분은 아래와 같이 sp 패키지를 찾을 수 없다는 메시지가 뜰 것이다.
No package named sp could be found



이는 해당 패키지가 설치되어 있지 않기 때문이다. 앞에서 배운 방법으로 패키지를 설치한 후
다시 명령을 입력해 보자. 다음과 같이 sp 패키지에 대한 도움말이 보일 것이다.

Chulmin Jun



1. R 시작하기

1.7. R의 표현

(1) 표현식과 개체


모든 R 표현식(expresseion)은 결과값을 화면에 표현하거나, 그래픽 또는 파일로 출력한다.



표현이 다 끝나지 않고 엔터를 친 경우에는 다음 줄에 “+”를 표시하여 표현식을 마치기를
기다린다.
> mean(
+ bmi)
[1] 23.13262



표현식은 개체(object)들에 적용된다. 여기에서 ‘개체란 변수에 할당될 수 있는 모든 것’을
칭한다.



개체에는 여러가지 타입이 있는데, 현재까지는 숫자형만 살펴보았다.

(2) 함수와 매개 변수



R에서는 수많은 함수들을 사용한다. 주요 함수들을 3절에 실었다.



함수는 괄호와 함께 쓰며, 괄호 안에는 매개 변수(argument)들이 들어간다.



매개 변수가 없는 경우에도 괄호는 포함시켜야 한다.
log(x)
plot(height, weight)
ls()

① 순서에 의한 매개변수와 & 명명된 매개 변수


매개 변수들이 순서대로 매칭이 되며(예: height는 x값, weight는 y값), 빠뜨린 매개 변수들은
디폴트 값으로 채워지는 경우도 있다.



다음과 같이 symbol을 변경시키는 등 매개 변수들을 이용해서 다양하게 변화를 줄 수 있다.
plot(height, weight, pch=2)



여기에서 pch는 plotting character를 뜻하는 명명된 매개 변수이다. 즉, 순서에 따르지 않고
keyword를 사용해서 매개 변수를 구성할 수도 있다.




즉, 다음 두 표현은 동일한 결과를 출력한다.
plot(height, weight)
plot(y=weight, x=height)

Chulmin Jun

21


22

Ch 1 R 의 기초

② 함수의 정규 매개 변수 정의


함수의 정규적인 매개 변수의 정의를 확인할 수 있다.



예를 들어, plot.default는 다음 명령으로 정규적인 매개 변수들이 어떻게 구성되어 있는지 알
수 있다.
> args(plot.default)
function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL,
log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL,
panel.last = NULL, asp = NA, ...)
NULL




여기에는 많은 인수들이 default값을 이미 가지고 있는 것을 알 수 있다. 예를 들어, 아무
인수를 넣지 않으면 type=”p”가 자동으로 채워짐을 의미한다.



NULL은 채워지지 않은 경우, 함수 내에서 자동적으로 동작하게 만든 경우를 말한다. 예를
들어 xlab과 ylab을 생략하면 다음과 같이 주어진 데이터 셋 이름을 이용한다.
> plot(height)
> plot(weight, xlab="x-label", ylab="y-label")



마지막에 세 개의 점(. . .)은 이 함수는 추가적으로 미리 정의되어 있지 않은 매개 변수를 허용한다는 의미이다.



보통 이들은 다른 함수로 전달된다.



어떤 함수들은 이들을 특별하게 다룬다. 예를 들어, data.frame이나 c와 같은 함수는 (. . .) 부분의 매개 변수는 산출
결과의 이름들이 된다.

Chulmin Jun


2. 데이터 형식


2. 데이터 형식
2.1. 데이터 형식의 종류


대부분 프로그래밍 언어에서는 데이터를 담기 위해 다양한 데이터 형식을 사용한다. R도
프로그래밍 언어이며 마찬가지로 여러 가지 데이터 형식이 있다.



이들은 ‘변수(variables)’라고 하며, 메모리 내에 일정 공간을 차지한다.



R에서는 어떤 하나의 값, 즉, 스칼라(scalar)값을 저장하는 데이터 형식과 열거형을 저장하는
데이터 형식들이 있다.



다음은 몇 가지 자주 사용하는 데이터 형식들이다.





스칼라: logical, numeric, integer, complex, character, raw, complex



열거형: vector, matrix, array, factor, data frame, list


그러나 C나 Java와 같은 일반 프로그래밍 언어와는 다르게 R에서의 데이터 형식들은,
개체(Object) 형태로 저장된다.

① 스칼라 형식의 데이터 형식


다음은 몇 가지 스칼라형 데이터 형식의 예이다.
데이터 형식



사용 예

character

‘a’, “A”, ”Hello”, “TRUE”, ’23.5’
※ ‘ ’와 “ “는 동일하나 “ “가 선호


> is.character("Hello")

# => TRUE

> is.character('a')

# => TRUE

> is.character("23.5")

# => TRUE


TRUE, FALSE

> is.logical(TRUE)

# => TRUE

> is.logical(T)

# => TRUE

> is.numeric(12.5

# => TRUE

> is.numeric(555)

# => TRUE

> is.integer(555)

# => FALSE

> is.integer(555L)

# => TRUE
# => TRUE

logical
numeric

integer

12.5, 4, 555
3L, 35L, 0L

complex

3 + 5i

> is.complex(3 + 5i)

raw

"Hello" is stored as 48 65 6c 6c 6f

> rawchar <- charToRaw("Hello")
> rawchar
[1] 48 65 6c 6c 6f
> is.raw(rawchar)



데이터 형식간의 변환(casting)은 ‘as.***’ 형태를 사용한다.
형인 ’23.5’를 numeric 형으로 변환하는 방법은 다음과 같다.

# => TRUE

예를

> num <- as.numeric('23.5')

> is.numeric(num)
[1] TRUE

Chulmin Jun

들어,

character

23


24

Ch 1 R 의 기초

② 열거형 데이터 형식


다음은 열거형에 해당하는 데이터 형식의 간단한 예이다.

※ 넓은 의미에서 열거형을 ‘벡터 클래스’로 정의하기도 한다.

데이터 형식

설명

vector

 동일 타입의 데이터가 순차적으

로 저장된 자료구조

list

 개체(object)의 집합으로 된 형식
 요소들의 집합인 벡터 구조이면
서 하나의 요소는 어떤 개체도
가능.
 요소들이 서로 같은 형태일 필요
는 없음

matrix

 2차원 array와 동일
 모든 요소가 동일 타입

array

 행렬(matrix)가 2차원인데 비해,
배열(array)은 어떤 수의 차원도
가능함

factor

 범주에 의미 있는 이름을 붙일
수 있는 데이터 구조
 Factor는 정수값의 벡터와 함께
각 값에 해당하는 문자값을 저장

data frame


 테이블 형태의 개체. 행렬과는
달리 각 컬럼은 서로 다른 데이
터 형식도 가능

사용 예
> carcolor > carcolor
[1] "red"
"green" "yellow"
> mylist 3'))
> mylist
[[1]]
[1] 1 3 7
[[2]]
[1] 21.3
[[3]]
[1] TRUE
> matrix(1:12, nrow=3)
[,1] [,2] [,3] [,4]
[1,]
1
4
7
10
[2,]
2
5
8

11
[3,]
3
6
9
12
> myarray <- array(1:12, dim=c(3,4))
> myarray
[,1] [,2] [,3] [,4]
[1,]
1
4
7
10
[2,]
2
5
8
11
[3,]
3
6
9
12
> pain <- c(0,3,2,2,1)
> fpain <- factor(pain)
> fpain
[1] 0 3 2 2 1
Levels: 0 1 2 3
> levels(fpain)

> fpain
[1] none severe medium medium mild
Levels: none mild medium severe
> BMI <- data.frame(gender =
c("Peter", "Paul","Mary"), height =
c(172, 178.5, 165), weight =
c(81,92,79), Age = c(32,38,24))
> BMI
gender height weight Age
1 Peter 172.0
81 32
2 Paul 178.5
92 38
3 Mary 165.0
79 24

 참고 사이트


/>


/>
Chulmin Jun


2. 데이터 형식

2.2. 벡터(Vector)



벡터(vector)는 동일 타입의 데이터가 순차적으로 저장된 자료구조이다. 후에 나올
배열(array)로 설명한다면 벡터는 1차원 배열과 같다. 벡터에는 numeric(숫자), character(문자),
logical(논리) 벡터가 있다. 숫자 벡터는 이미 알아보았다.



Character vector는 문자열로 되어 있는 vector를 의미한다.
> c("Peter","Paul","Mary")
[1] "Peter","Paul","Mary"



문자열은 single, 또는 double quote를 모두 이용할 수 있다.
> c('Peter','Paul','Mary')
[1] "Peter","Paul","Mary"



Logical vector는 TRUE나 FALSE (또는 NA)로 구성된다. 또는 T나 F로 줄여서 쓸 수도 있다.
> c(T,T,F,T)
[1] TRUE TRUE FALSE TRUE



다음은 bmi vector내의 값들이 25보다 큰 지 평가를 한다.
> bmi > 25
[1] FALSE FALSE FALSE FALSE TRUE FALSE

(1) 따옴표와 이스케이프



“Peter”나 ‘Peter’에서 따옴표들은 문자열에 포함되지 않으며, 이들이 변수명이 아니라
문자열임을 의미한다.



문자 vector를 출력하면 항상 각 요소를 double quote로 감싸서 프린트 해 주는데, quote 없이
표현하려면 다음과 같이 하면 된다.
> cat(c("Peter","Paul","Mary"))
Peter Paul Mary>



cat은 argument를 출력하는 함수이다. 이는 출력을 한 후 줄바꿈을 하지 않는다. 만약 줄을
바꾸고 double quote를 표시하지 않길 원한다면 다음과 같이 하면 된다.
> cat("Peter","Paul","Mary", "\n")
Peter Paul Mary
>



여기에서 “\n”이 이스케이프(escape sequence)의 예이다. 역 슬래쉬(back slash, “\n”)를 escape
character라고 한다. 이는 뒤에 오는 문자와 함께 특수한 의미를 만들거나, 따옴표(‘, “) 등을
문자로 인식하도록 만든다. 예를 들어, 다음 예와 같이 문장 내에 “R”을 포함하기 위해
쌍따옴표 앞에 “\”를 붙였으며, “\n”은 줄바꿈 문자(LF)로 인식되도록 했다.
> cat("What is \"R\"?\n")
What is "R"?
>




예를 들어, “\”를 문장 내에 프린트 하기 위해 그 앞에 “\”를 사용해야 한다.
> cat("\'\\\' is the escape character.")
'\' is the escape character.>

Chulmin Jun

25


×