# if you need a package
#install.pakcages("ggplot2")
# geom_smooth() adds a regression line to the scatter plot
library(ggplot2)
ggplot(data = cars, aes(x = speed, y = dist)) +
geom_point() +
geom_smooth(method = "lm")
Introduction to R and Base-R
Introduction to R, and how to manage and visualize your data with R
안녕하세요, Learning Basic Methods with R and TeX
워크샵에 참석하신 것을 환영합니다.
R
은 통계 분석과 데이터 과학을 위한 훌륭한 프로그래밍 언어입니다. 이 워크샵를 통해 R
을 즐겁게 배우고 자신의 연구 분야에 유용한 활용법을 찾아볼 수 있는 기초를 갖추게 되길 기대합니다. 이 워크샵은 사회과학에 대한 프로그래밍 배경 지식이 없거나 혹은 R
을 사용해본 적이 없는 대학원생들을 위해 기획되었습니다. 이 워크샵 노트에서 이 글꼴
은 R
명령어, 변수 이름, 패키지 이름을 나타냅니다.
이번 학기의 학습 효과를 극대화하려면 매일 워크샵이 끝나고 나서 실습과제를 풀어 제출하고 질문을 가져오셔야 합니다. 본 워크샵에 대해 궁금한 점(예: R
실행 시 오류, 과제에 대한 질문 등)이 있으시면 pherephobia@gmail.com로 질문을 보내주시기 바랍니다.
R & RStudio (POSIT)
R
은 프로그래밍 언어입니다. 프로그래밍 언어는 컴퓨터가 우리를 위해 작동하도록 하는 일련의 명령어(또는 명령어)로 구성된 공식적인 언어입니다. 예를 들어, 다음 R
명령을 실행하면 컴퓨터에서 일련의 명령어를 이해하고 플롯을 생성할 수 있는 무언가가 있어야 합니다. 이것이 바로 R
입니다. 따라서 R
프로그래밍 언어를 배우려면 R
을 설치해야 합니다.
그렇다면 RStudio
는 무엇일까요? R
프로젝트 홈페이지의 첫 줄에 “R
은 통계 컴퓨팅과 그래픽을 위한 무료 소프트웨어 환경입니다” 라고 명시되어 있듯이, R
은 프로그래밍에 도움이 되는 몇 가지 기능(예: R
코드를 편집할 수 있는 소스 편집기)을 제공하는 RGUI
라는 플랫폼을 기본적으로 제공하고 있습니다만, 그다지 편리한 인터페이스를 가지고 있지 않습니다. 따라서 R
에 통합 개발 환경(IDE)으로서 RStudio
가 개발되었습니다. 현재는 이름이 바뀌어서 POSIT
이라고 합니다. R
을 사용하는 가장 좋은 방법은 R
과 RStudio
를 모두 설치한 다음 프로그래밍에 RStudio
를 사용하는 것입니다. R
은 프로그래밍 언어이며 RStudio
는 R
을 위한 인터페이스입니다.
Installation
R
과 RStudio (POSIT)
설치에 관련된 내용은 워크샵 페이지의 홈 화면에서 Pre-Wrok
부분을 확인하여 주시기 바랍니다.
한글 윈도우쓰시는 경우, 간혹 POSIT
설치시 다음과 같은 경우에 설치가 안돼거나 설치되어도 작동이 안할 수 있습니다:
사용자명이 한글로 되어 있는경우
컴퓨터 이름이 한글로 되어 있는경우
설치 폴더 경로중에 한글이 포함된 경우
한글 윈도우를 쓰시는 경우, 사용자명, 컴퓨터 이름, 설치 폴더 경로가 모두 영어가 되어 있는지를 확인하고 오류 발생 시 구글이나 네이버에 가셔서 “RStudio
한글 설치” 정도의 키워드로 검색을 해보시면 RStudio
설치 시 한글과의 충돌로 인한 문제점에 대한 많은 문서들을 발견할 수 있습니다. 문제가 생기면 우선 구글이나 네이버 검색을 통해서 해결해 보시기 바랍니다. 그래도 해결이 안 되는 경우 메일로 문의주시기 바랍니다.
Why R?
R
은 통계 분석을 위해 특별히 설계된 언어입니다.- 많은 연구자들이 통계 및 기계 학습을
R
을 사용하여 구현합니다. 따라서R
의 많은 패키지를 다운로드하여 최첨단 알고리즘을 사용할 수 있습니다.
- 많은 연구자들이 통계 및 기계 학습을
R
은 출판 수준의 데이터 시각화를 위한 훌륭한 도구를 제공합니다.- 데이터 시각화는 데이터를 이해하고 다른 사람들에게 결과를 발표하는 데 도움이 됩니다. 이 강의에서는 데이터 시각화를 위한
ggplot2
패키지를 배웁니다.
- 데이터 시각화는 데이터를 이해하고 다른 사람들에게 결과를 발표하는 데 도움이 됩니다. 이 강의에서는 데이터 시각화를 위한
R
은 데이터 전처리를 위한 훌륭한 도구를 제공합니다.R
사용의 궁극적인 목표는 데이터 시각화와 모델링을 통해 데이터를 이해하는 것입니다.
그러나 로데이터를 데이터 시각화 및 모델링에 적합한 형태로 만드는 데 많은 시간을 투자해야 하는 경우가 많습니다.
이 프로세스는 데이터 변환 및 데이터 정리를 포함하는 데이터 전처리라고도 합니다.
R
에서는 데이터 변환(data transforming)을 위해dplyr
패키지가 개발되었고, 데이터 정리(data tidying)를 위해tidyr
패키지가 개발되었습니다. 이번 워크샵에서는 dplyr 패키지와tidyr
패키지를 모두 다룹니다.데이터 전처리는 다양한 소스의 데이터를 효과적으로 처리하기 위한 요즘의 중요한 기술입니다. 예를 들어, 많은 서버가 데이터 교환을 위해 사용자 데이터를
JSON
형식으로 저장하므로, 사용자 데이터를 분석에 사용하려면JSON
파일을 처리해야 합니다.
R
에는 활발하고 지원적인 커뮤니티가 있습니다.R
커뮤니티에서 유용한 리소스를 많이 찾을 수 있습니다. 예를 들어,bookdown
은 책을 쓰기 위한R
패키지이며, bookdown.org에서는bookdown
패키지로 작성된 유용한R
서적을 무료로 제공합니다.
R은 무료 오픈소스 소프트웨어입니다.
R vs Python
Python
은 또 다른 훌륭한 프로그래밍 언어입니다. Python
은 다양한 애플리케이션(예: 데이터 과학, 웹 개발, 데이터베이스)에 사용되는 범용 프로그래밍 언어인 반면, R
은 데이터 과학에 중점을 둔 프로그래밍 언어입니다. 이 워크샵의 목표 중 하나는 R
을 탐색할 수 있는 기회를 제공하여 어떤 언어가 목적에 가장 적합한지 결정할 수 있도록 하는 것입니다. 두 언어가 모두 필요할 수도 있습니다.
“Generally, there are a lot of people who talk about R versus Python like it’s a war that either R or Python is going to win. I think that is not helpful because it is not actually a battle. These things exist independently and are both awesome in different ways.”
- 해들리 위컴(Hadley Wickham)
RStudio (POSIT)
R
및 RStudio
(POSIT
)를 성공적으로 설치했으면 RStudio
를 시작해봅시다. 다음과 같은 화면이 표시될 것입니다. 다시 한 번 말씀드리지만, RStudio
는 R
을 위한 편리한 인터페이스(또는 IDE)이므로 R
이 아닌 RStudio
만 실행하면 됩니다.
처음 실행하면 위와 같은 화면이 나오게 됩니다. 기본 화면은 하얀색 바탕에 검은 글씨이지만, 이러한 테마는 추후에 기호에 따라 조정할 수 있습니다. RStudio
는 기본적인 기능들에 대하여 소개하고 있다.
RStudio
는 4개의 패널(또는 창)로 구성되어 있습니다.
- 편집기 창(editor pane):
R
스크립트 또는RMarkdown
,Quarto
와 같은 문서 파일에서 코드를 편집할 수 있는 곳입니다. - 콘솔 창(console pane): 코드를 즉시 실행할 수 있는 곳입니다.
- 환경 창(environmental pane): 작업하면서 저장한 개체(또는 변수)를 볼 수 있는 곳입니다.
- 파일/플롯/패키지/도움말 창(file/plots/packages/help pane): 파일, 플롯, 패키지 및 도움말 문서를 볼 수 있는 곳입니다.
R Packages
R
패키지는 특정 목적을 위해 개발된 함수 및 데이터셋의 모음입니다. 예를 들어, {tidyverse}
패키지는 데이터의 전처리 및 분석에 유용한 함수가 많이 포함되어 있는 패키지입니다. R
의 기본적인 함수와 기능들에 대해서도 살펴보겠지만, 이후의 주요 내용들은 모두 {tidyverse}
사용을 중심으로 다루게 됩니다.
R
의 패키지 시스템은R
프로젝트의 핵심적인 부분으로, 여러분을 포함한 전 세계의 모든 기여자가 패키지를 개발하여R
프로젝트에 기여할 수 있습니다.현재 CRAN(Comprehensive R Archive Network) 저장소에는 18,000개 이상의 패키지가 포함되어 있습니다. 현재까지의 가용한 공식
R
패키지 목록은 여기에서 확인할 수 있습니다.
Installing and Loading
설치는 CRAN 저장소에서 로컬 컴퓨터로 패키지 파일을 다운로드하는 것을 의미합니다. 처음부터 18,000개의 패키지 파일을 모두 다운로드할 필요는 없습니다. 필요한 일부 패키지만 로컬 컴퓨터에 다운로드하면 되며, 패키지는 한 번만 설치하면 됩니다. 패키지를 설치하는 데는 install.packages()
라는 R
함수가 사용됩니다.
로딩은 패키지의 함수와 데이터를 컴퓨터 메모리에 불러오는 것을 의미합니다. 모든 패키지의 함수와 데이터를 메모리에 로드하는 것은 컴퓨터의 메모리 관리 측면에서 비효율적입니다. 따라서 필요할 때만 패키지를 메모리에 로드합니다. 즉, 패키지에서 함수를 사용하려면 해당 함수가 포함된 패키지를 그때 그때 불러와야 합니다. library()
라는 R
함수는 패키지를 로드하는 데 사용됩니다.
- 예를 들어,
ggplot2
함수를 사용하기 전에library("ggplot2")
로ggplot2
패키지를 로드합니다. 그 이후에 다음과 같은 함수를 실행할 수 있게 됩니다:ggplot(mtcars, aes(x = disp, y = mpg)) + geom_point() + geom_smooth(method = "lm")
Base R vs Tidyverse
Base R
은 R
을 새로 설치할 때 함께 제공되는 기능 및 패키지 모음을 말합니다. 반면, {tidyverse}
패키지(https://www.tidyverse.org)는 R
에서 보다 효율적인 데이터 과학 분석 및 전처리를 위한 패키지 모음입니다. {tidyverse}
패키지에는 각각 효율적인 데이터 변환, 데이터 정리, 데이터 시각화, 반복에 유용한 여러 가지 기능들을 제공하는 {dplyr}
, {tidyr}
, {ggplot2}
, {purrr}
등과 같은 패키지들이 내장되어 있습니다. 이 워크샵의 주요 목표 중 하나는 {tidyverse}
패키지를 이용한 데이터 분석의 기초를 다지는 것입니다.
Console vs R script file vs R Markdown File
R
프로그래밍을 하려면 컴퓨터에게 내가 무엇을 하길 원하는지 알려줘야 합니다. 간단히 R
명령을 입력하기만 하면 됩니다. 콘솔, R
스크립트 파일, RMarkdown
파일은 R
과 상호 작용하며 문서 혹은 프로그래밍을 작성할 수 있는 세 가지 방법입니다.
콘솔에서는 프롬프트(예:
>
모양의 기호 옆)에R
명령을 입력하고<Enter>
키를 누르기만 하면R
이 명령을 실행하고 결과를 바로 표시합니다. 콘솔을 사용하면 명령을 빠르게 실행할 수 있지만R
을 종료하면 명령이 사라집니다.R 콘솔에서의 명령 실행 R
스크립트는 파일 확장자가.R
인 텍스트 파일입니다.R
스크립트를 사용하면 나중에 사용할 수 있도록R
명령을 저장할 수 있습니다. 다만R
스크립트는 분석을 위해 사용한 일련의 코드들은 저장할 수 있지만, 분석 결과를 저장할 수는 없습니다.R 스크립트에서의 코드 작성
RMarkdown
또는 Quarto
는 각각 파일 확장자가 .Rmd
, qmd
인 텍스트 파일이면서도 동적 문서를 작성할 수 있는 플랫폼입니다. 이 두 양식을 사용하게 되면, 다음과 같이 R
과 관련된 코드들은 회색 영역인 코드청크(code chunk)에, 결과 및 텍스트는 흰색 영역에 작성 및 저장할 수 있습니다.
More about Quarto and RMarkdown, Interactive Documentations
이 워크샵에서는 RMarkdown
또는 Quarto
의 장점을 배울 수 있도록 제출해야할 실습과제 결과물을 RMarkdown
이나 Quarto
로 작성할 것을 주문합니다. 사람들이 RMarkdown
이나 Quarto
를 사용하는 이유는 커뮤니케이션을 위한 훌륭한 도구이기 때문입니다. 데이터 과학에서는 데이터를 분석하고 나면 보통 그 결과를 다른 사람들과 공유하고자 하는데, 이러한 동적 문서 플랫폼을 사용하면 R
코드, 결과 및 텍스트가 포함된 문서를 HTML, PDF, Microsoft Word 및 기타 동적 문서와 같은 다양한 형식으로 만들 수 있습니다.
요즘은 발표하는 내용만큼이나 발표하는 방법도 중요합니다. RMarkdown
이나 Quarto
를 배우면 다양하고 멋진 포맷으로 콘텐츠를 프레젠테이션할 수 있습니다. 또한, 최근 정치학 연구들도 높은 수준의 수리통계학적 모델들을 제시할 필요가 있는데, 이러한 수식을 작성하는데 강점인 를 이용하여 Quarto
나 RMarkdown
결과를 정돈된 PDF 형태의 문서로 출력할 수 있습니다. 이 워크샵 자료 역시 Quarto
를 사용하여 만든 후 Github
페이지를 이용하여 구축한 것입니다. RMarkdown
과 Quarto
, 그리고 에 관한 내용은 다음 시간에 좀 더 자세히 알아보도록 하겠습니다.
RStudio Cheatsheets
R
의 강점 중 하나는 패키지 시스템입니다. Base R
의 기능을 확장하는 패키지는 18,000개가 넘습니다. 하지만 이렇게 많은 패키지의 세부 사항을 모두 기억하기는 어렵습니다. RStudio
에서는 중요한 R
패키지의 기능을 한두 페이지에 요약한 RStudio Cheatsheets
를 제공합니다. 치트시트는 실제로 프로젝트에서 `R`을 사용할 때 참고할 수 있는 좋은 자료입니다.
Introduction to Base R
Let’s Go to the Tutorials to Understand Basic Base R
and Wonderful {tidyverse}
!
Data Structures
R
에는 기본적인 데이터 구조가 있습니다.다른 거의 모든 객체는 기본적인 데이터 구조를 기반으로 구축됩니다.
R
기본 데이터 구조는 차원별로 구성할 수 있습니다:
차원 | 동질적 자료 유형 | 이질적 자료 유형 |
---|---|---|
1D | 벡터(atomic vector) | 리스트(list) |
2D | 행렬(matrix) | 데이터프레임(Data Frame) |
nD | 어레이(array) |
Practice Problems
다음의 다섯 개의 문제는 Base R
에 대한 이해를 높이기 위한 연습 문제입니다. 코드를 이해하고 실행할 수 있으면 성공입니다.
- 벡터
a
에 있는 모든 관측값의 평균과 관측값들에서 평균을 제한 값의 제곱의 합을 계산해보세요.
# 벡터 a
<- c(1,2,3)
a
# 먼저 벡터 a의 평균을 구해보세요.
# 평균을 구한 다음 벡터 a의 각 값에서 그 평균을 빼보세요. 벡터의 성질을 떠올려보세요.
# 관측값 - 평균에 각각 제곱을 취한 뒤 더해주세요.
mtcars
데이터를 불러와보세요. BaseR
에 속한 데이터입니다.mtcars
데이터셋에서 차량의 실린더를 보여주는 변수cyl
의 값이 6인 경우는 모두 몇 개 입니까?mtcars
데이터셋에서cyl == 6
인 차량들의 연료비(mpg
)의 평균값은 무엇입니까?- 새롭게
a
를 정의해보겠습니다. 그리고 다음의 코드를 작성하였을 때, 결과는 어떻게 나타날까요? 에러?TRUE
?FALSE
?
# a는 요인변수(factor)가 됩니다.
# 알파벳 순서에 따라 "중간"이 먼저 표시됩니다.
# 이 순서는 팩터의 내재적 순서를 나타내지 않음을 유의하세요.
<- factor(c("high", "high", "medium", "low"))
a a
[1] high high medium low
Levels: high low medium
# 다음의 코드의 결과는 어떻게 될까요?
1] <- "very high" a[