R Markdown 소개 및 환경설정
R Markdown
Markdown
Manual
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 출력물(다른 말로, 웹페이지)을 생성할지가 포함됩니다.
위 필드는 임의 삭제가 가능하나, 경험적으로는 포함시키는 것이 좋습니다.
구성 2. R 코드 덩어리 - Set Up
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
위 구성은 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에서 작성한 그림의 위치를 변경할 수 있다.
-
그 외 옵션을 확인하려면 아래와 같이 코드를 입력 후 실행하면 결과값이 나옵니다.
knitr::opts_chunk$get()
구성 3. R 코드 덩어리 - 작업 코드 예제
```{r}
summary(cars)
```
knitr
로 실행되면, R 코드 덩어리를 실행결과와 함께 나타납니다.
Step 3. 마크다운(Markdown)문법에 대한 이해
마크다운은 2004년 12월에 처음 등장한 것으로 보입니다.2 마크다운을 활용하여 작성된 문서는 보다 쉽고 빠르게 HTML 등 다른 문서 형태로 변환이 가능합니다. 특별히, R Markdown은 R 사용자를 위한 Markdown으로 이해하시면 좋습니다.
기본 문법 1. Bold & Italic
별표*
를 활용하여 굵게 또는 이탤릭체로 변환할 수 있습니다.
-
굵게:
**굵게(bold)**
-
이탤릭:
*이탤릭(italic)*
기본문법 2. 구분점
아래와 같이 하이픈-
혹은 별표*
를 적용해서 구분점이 붙은 항목을 생성할 수 있습니다.
* 위 그래프는 ~
* 위 표는 ~
* 따라서, ~
혹은 아래와 같이 작성도 가능합니다.
- 위 그래프는 ~
- 위 표는 ~
- 따라서, ~
코드 실행 시, 다음과 같이 웹페이지로 보이게 됩니다.
-
위 그래프는 ~
-
위 표는 ~
-
따라서, ~
숫자 사용을 활용한 구분점도 아래와 같이 적용하면 가능합니다.
1. 위 그래프는 ~
2. 위 표는 ~
3. 따라서, ~
코드 실행 시, 다음과 같이 웹페이지로 보여지게 됩니다.
-
위 그래프는 ~
-
위 표는 ~
-
따라서, ~
기본 문법 3. 섹션 제목 만들기
섹션 제목을 만들려면 #
기호를 활용하여 각 라인 첫 번째 적용하게 되면 다른 크기를 갖는 섹션 제목을 만들 수 있을 뿐만 아니라, 위 섹션이 목차로 재 활용될 수 있습니다.
첫번째 제목 (Title)
두 번째 제목 (Main Section)
세 번째 제목 (Sub-Section)
네 번째 제목 (Sub-sub Section)
Step 4. 마크다운(Markdown) 다양한 기능 사용
기능 1. 하이퍼링크
독립적으로 링크 코드를 입력하거나, 또는 문장 중간에 삽입이 가능합니다. 아래와 같은 방법으로 입력하시면 됩니다.
문법: [text](링크)
예시: [네이버](https://www.naver.com)
네이버 클릭하시면(→) 네이버 네이버 메인 화면에 연결됩니다.
기능 2. 이미지 삽입
아래와 같은 방법으로 이미지를 삽입할 수 있습니다.
문법: ![caption](경로)
예시: ![타펀](./Ta-fun.png)
다만, image size 작업 조정을 직접 하려면 R 코드 덩어리에 아래와 같은 방법으로 작업할 수도 있습니다. (예: out.width=”400px”, out.height=”400px”)
다만, 경험적으로 봤을 때는 개별 이미지를 수정하려면 HTML 소스 코드 또는 소스코드를 직접 입력하는 것을 권장합니다.
test.Rmd
test.css
#myImagePage img {
width: 400px;
height: 200px;
}
기능 3. LaTeX expression
수식 작성법은 Latex라는 문법을 참조해서 작성할 수 있습니다.
기능 4. 인라인(Inline) R 코드
인라인 R코드를 활용하는 가장 궁극적인 목적은 보고서의 모든 숫자를 재현 가능하게 만들기 위해서입니다. 인라인 코드를 작성할 때 `r
와 `
을 사용합니다. 예를 들어, `r 2+2`
또는 `r round(some_value, 2)`
. R 코드가 실행되어 코드가 결과 값으로 치환됩니다.
Step 5. 다른 언어와의 호환성 (고급)
R과 함께 파이썬 또는 SQL을 다루는 머신러닝 개발자가 있다고 가정합니다. 그러면 R Markdown 안에서도 python 코드를 실행 후 작업할 수가 있습니다. 다만, 이때에는 코드 덩어리를 파이썬 또는 sql로 명명해야 적용이 가능합니다.
예를 들면 아래와 같이 작성이 가능합니다.
```{r}
summary(cars)
```
위 데이터의 결과값은 ~
```{python}
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
```
(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/ ↩
'R > [R] 잡동사니' 카테고리의 다른 글
Jupyter Notebook + R 연동하기 (1) | 2019.01.24 |
---|