R Markdown Introduction
R Markdown 소개 및 환경설정
데이터 분석가의 주요 업무 중의 하나는 향후에 참고자료로 활용하기 위해 작업결과를 문서화 해야 하는데, 상당량의 보고서를 작성해서 분석과정과 출력결과를 기술해야만 합니다.
보통의 과정은 아래과 같을 것입니다.
- 1단계: 본인의 작업을 위해서 R 스크립트 작성
- 2단계: 다양한 그래프가 첨부된 분석결과를 Word, PPT 분석결과를 기술해서 동료 또는 메신저로 분석결과 전송
- 3단계: 분석결과 토의
- 4단계: 각각의 그래프 결과 코드를 매칭하기 위한 작업이 토의 중 발생
- 5단계: 혼란 및 불필요한 시간 소요 발생
그런데, 해당 작업물을 그 때 마다 웹페이지(HTML)을 생성하여 자체 서버내 구축할 수 있다면, 그러면 위 5단계의 과정을 3단계(소스코드 작성 -> 웹 게시 -> 분석결과 토의)로 축소할 수가 있을 것이며 특히, 연구자가 분석 당시의 고민과 문제점들을 스크롤링과 함께 같이 고민할 수 있는 시간으로 빠져들 수 있도록 유도할 수 있습니다.
데이터 분석 보고서는 보고서의 작성이 연구자의 끝이 아니기 때문에 분석의 과정과 결과물을 잘 정리하여 의사결정을 하는데 반드시 도움이 되어야 하는 일종의 제안서와 같습니다.
본 게시물은 R을 처음 접하는 데이터 분석가를 위해서 작성하였습니다. 사내의 보고서 문화 혁신에 기여하기를 바라는 마음과 함께!!
Step 1. R 마크다운 파일 생성
R 마크다운 파일 생성은 아래와 같이 생성할 수 있습니다. RStudio에서 File -> New File -> R Markdown을 클릭하시면 아래와 같이 대화상자가 열립니다.
Title과 Author를 설정 한 후 HTML로 클릭합니다.
Step 2. R 마크다운 기본 구성요소
기본 구조는 아래와 같이 확인 될 것입니다.
구성 1. Header
초기 설정된 텍스트 덩어리에 R에 대한 지시사항이 담겨있다: 제목, 저자명, 날짜, html 출력물(다른 말로, 웹페이지)을 생성할지가 포함됩니다.
---
title: "Initial R Markdown document"
author: "Evan Jung"
date: "10/4/2019"
output: html_document
---
위 필드는 임의 삭제가 가능하나, 경험적으로는 포함 시키는 것이 좋습니다.
구성 2. R 코드 덩어리 - Set Up
위 구성은 R 마크다운 문서의 기본 Set Up 코드이기 때문에 유지하는 것을 원칙으로 합니다. 위 코드 상 옵션에 대한 설명은 아래와 같습니다.
- setup: 소스코드 덩어리에 대한 title이며, 다른 소스코드 덩어리와 중복 작성 시, 에러가 발생합니다.
- include=FALSE: 문서에는 포함시키지 않고, 몰래 실행할 수 있으며, 주로 최초 설정에 이용됩니다.
- knitr::opts_chunk$set에서 디폴트 옵션을 설정할 수 있으며, echo = TRUE는 코드를 보여줍니다. 그 외 옵션은 아래를 확인하여 주시기를 바랍니다.1
- eval = F: 코드 실행하지 않는다.
- echo = F: 코드를 보여주지 않는다.
- include=F: 실행 결과를 보여주지 않는다.
- message=F: 실행 때 나오는 메세지를 보여주지 않는다.
- warning=F: 실행 때 나오는 경고를 보여주지 않는다.
- error=T: 에러가 있어도 실행하고 에러코드를 보여준다.
- fig.height=(number): R에서 작성한 그래프를 그림의 높이를 조정할 수 있다.
- fig.width=(number): R에서 작성한 그림의 넓이를 높이를 조정할 수 있다.
- fig.align=‘center’ : R에서 작성한 그림의 위치를 변경할 수 있다.
그 외 옵션을 확인하려면 아래와 같이 코드를 입력 후 실행하면 결과값이 나옵니다.
구성 3. R 코드 덩어리 - 작업코드 예제
knitr
로 실행되면, R 코드 덩어리를 실행결과와 함께 나타납니다.
Step 3. 마크다운(Markdown)문법에 대한 이해
마크다운은 2004년 12월에 처음 등장한 것으로 보입니다.2 마크다운을 활용하여 작성된 문서는 보다 쉽고 빠르게 HTML 등 다른 문서 형태로 변환이 가능합니다. 특별히, R Markdown은 R사용자를 위한 Markdown으로 이해하시면 좋습니다.
기본문법 1. Bold & Italic
별표*
를 활용하여 굵게 또는 이탤릭체로 변환할 수 있습니다.
- 굵게:
**굵게(bold)**
- 이탤릭:
*이탤릭(italic)*
기본문법 2. 구분점
아래와 같이 하이픈-
혹은 별표*
를 적용해서 구분점이 붙은 항목을 생성할 수 있습니다.
혹은 아래와 같이 작성도 가능합니다.
코드 실행 시, 다음과 같이 웹페이지로 보여지게 됩니다.
- 위 그래프는 ~
- 위 표는 ~
- 따라서, ~
숫자 사용을 활용한 구분점도 아래와 같이 적용하면 가능합니다.
코드 실행 시, 다음과 같이 웹페이지로 보여지게 됩니다.
- 위 그래프는 ~
- 위 표는 ~
- 따라서, ~
기본문법 3. 섹션 제목 만들기
섹션 제목을 만들려면 #
기호를 활용하여 각 라인 첫번째 적용하게 되면 다른 크기를 갖는 섹션 제목을 만들 수 있을 뿐만 아니라, 위 섹션이 목차로 재 활용될 수 있습니다.
# 첫번째 제목 (Title)
## 두번째 제목 (Main Section)
### 세번째 제목 (Sub-Section)
#### 네번째 제목 (Sub-sub section)
첫번째 제목 (Title)
두번째 제목 (Main Section)
세번째 제목 (Sub-Section)
네번째 제목 (Sub-sub Section)
Step 4. 마크다운(Markdown) 다양한 기능 사용
기능 1. 하이퍼링크
독립적으로 링크 코드를 입력하거나, 또는 문장 중간에 삽입이 가능합니다. 아래와 같은 방법으로 입력하시면 됩니다.
문법: [text](링크)
예시: [네이버](https://www.naver.com)
네이버 클릭하시면(→) 네이버 네이버 메인 화면에 연결됩니다.
기능 2. 이미지 삽입
아래와 같은 방법으로 이미지를 삽입할 수 있습니다.
문법: ![caption](경로)
예시: ![rmarkdownlogo](./rmarkdownlogo.jpeg)
다만, image size 작업 조정을 직접 하려면 R 코드 덩어리에 아래와 같은 방법으로 작업할수도 있습니다. (예: out.width=“400px”, out.height=“400px”)
다만, 경험적으로 봤을 때는 개별 이미지를 수정하려면 HTML 소스 코드 또는 소스코드를 직접 입력하는 것을 권장합니다.
test.Rmd
---
title: "Initial R Markdown document"
author: "Evan Jung"
date: "10/4/2019"
output: html_document
css: test.css
---
## Page with an image {#myImagePage}
![Image](path/to/image)
기능 3. LaTeX expression
수식작성법은 Latex라는 문법을 참조해서 작성할 수 있습니다.
$$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
$$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
기능 4. 인라인(Inline) R 코드
인라인 R코드를 활용하는 가장 궁극적인 목적은 보고서의 모든 숫자를 재현가능하게 만들기 위해서입니다. 인라인 코드를 작성할 때 `r와 `을 사용합니다. 예를 들어, `r 2+2` 또는 `r round(some_value, 2)` . R 코드가 실행되어 코드가 결과 값으로 치환됩니다.
Step 5. 다른 언어와의 호환성 (고급)
R과 함께 파이썬 또는 SQL을 다루는 머신러닝 개발자가 있다고 가정합니다. 그러면 R Markdown 안에서도 python 코드를 실행 후 작업할 수가 있습니다. 다만, 이때에는 코드 덩어리를 파이썬 또는 sql로 명명해야 적용이 가능합니다.
예를 들면 아래와 같이 작성이 가능합니다.
(Option) 더 공부하기
위에서 제공한 자료를 가지고도 충분히 보고서를 작성하는데는 부족함이 없습니다. 다만, 보고서를 조금 더 풍성하게 만들고자 한다면 메뉴얼을 참고해서 보다 전문적으로 작성하는 권장합니다.
FAQ
- Email: j2hoon85@gmail.com
-
“R Markdown 기초”, “Zarathu Official Blog”, 2019년 1월 3일 수정, 2019년 10월 4일 접속, https://blog.zarathu.com/posts/2019-01-03-rmarkdown/ ↩︎
-
“Markdown”, “Daring Fireball”, 2004년 12월 17일 수정, 2019년 10월 4일 접속, https://daringfireball.net/projects/markdown/ ↩︎