R/MarkDown

[R Markdown] DT datatable 커스터마이징 :: 파라미터 알아보기

슈퍼짱짱 2020. 12. 22. 14:24
반응형

R 마크다운 DT::datatable 파라미터 조정하기

 

R 에서 만든 마크다운 파일(html) 파일에 DT 라이브러리에 datatable 함수로 data를 보기 좋게 표현할 수 있다.

예로 iris 데이터를 DT::datatable 로 표현하면 다음과 같다.

 

 

코드는 다음과 같다.

datatable(DATA) 로 쉽게 표현할 수 있다.

 

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=TRUE, warning=FALSE, message=FALSE, results = 'asis')
options(warn = F)

library(DT)
```

```{r}
datatable(iris) 
```

 

참고로 datatable parameter의 default 값은 다음과 같다.

 

datatable(data, options = list(), class = "display",
    callback = JS("return table;"), rownames, colnames, container,
    caption = NULL, filter = c("none", "bottom", "top"), escape = TRUE,
    style = "default", width = NULL, height = NULL, elementId = NULL,
    fillContainer = getOption("DT.fillContainer", NULL),
    autoHideNavigation = getOption("DT.autoHideNavigation", NULL),
    selection = c("multiple", "single", "none"), extensions = list(),
    plugins = NULL, editable = FALSE)

datatable 의 결과를 간단히 소개하면 다음과 같다.

 

전체 150개 데이터를 한 페이지에 10개씩 보여준다. 

Show 뒤에 있는 10 을 눌러보면 다음과 같이 한 번에 몇 개의 데이터를 확인할 건지 변경할 수 있다.

 

Search 를 통해 원하는 값을 직접 검색할 수도 있다.

 


1. caption

caption 파라미터를 통해 테이블에 제목을 지정할 수 있다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F) 

 


2. rownames

rownames = FALSE 로 왼쪽 row index를 없앨 수 있다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F) 

 


3. colnames

colnames 로 지정되어있는 컬럼명을 변경할 수도 있다.

첫 번째 열의 이름을 Col1 로 변경하는 코드는 다음과 같다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F,
          colnames = c("Col1"="Sepal.Length")) 

 


4. filter

filter는 각 컬럼별로 적용되며, 말 그대로 값을 filtering 해 주는 역할을 한다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F,
          colnames = c("Col1"="Sepal.Length"),
          filter = "bottom") 

아래(bottom) 에 filter 를 추가했으며, 결과는 다음과 같다.

 

수치형은 숫자범위로 filtering 할 수 있고,

범주형은 범주자체를 filtering 할 수 있다.

하나 이상을 넣는 것이 가능하며, 원하는 범주를 자유롭게 넣고 뺄 수 있다.

 


5. width, height

width 와 height는 가로길이와 세로길이를 지정하는 파라미터이다. 

다음은 width와 height를 모두 500으로 지정했을 때 결과이다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F,
          colnames = c("Col1"="Sepal.Length"),
          filter = "bottom",
          width = 500, height = 500) 

 

아무것도 지정하지 않았을 때 크기는 다음과 같다.

 

사실 width와 height를 따로 지정해 주지 않으면 생성된 마크다운 파일에 맞게 사이즈를 알아서 조정해준다. 

 


6. editable

editable은 편집을 가능하게 하는 기능이다. defualt는 FALSE이며, TRUE 혹은 "cell"로 설정해줄 수 있다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F,
          colnames = c("Col1"="Sepal.Length"),
          filter = "bottom",
          editable = T) 

 

편집하고 싶은 cell을 더블클릭하여 값을 변경할 수 있다.

 

 

값 변경 후 엔터를 치면 변경된 값으로 나타난다.

 


7. extensions + options

 

다음은 extensions과 options의 조합으로 마크다운에 만들어진 datatable을 csv나 excel 등의 파일로 저장하기 위한 버튼을 만드는 방법이다. 개인적으로 아주 유용하게 쓰고있는 기능이다.

 

datatable(iris,
          caption = "IRIS DATA SET",
          rownames = F,
          colnames = c("Col1"="Sepal.Length"),
          filter = "bottom",
          editable = T,
          extensions = "Buttons",
          options = list(dom ='Bfrtip', 
                         buttons =c('csv', 'excel','print','pdf'))) 

 

exrensions 에 Buttons 로 버튼을 추가하겠다고 입력 후 options에서 구체적으로 어떤 버튼을 추가할 건지 입력해준다.

 

그럼 왼쪽 상단에 버튼들이 추가되고, 버튼 클릭시 해당 확장자를 가진 파일이 마크다운 파일과 같은 이름으로 저장된다.

 

 


버튼에 I('colvis'), 'copy' 를 추가하여 원하는 컬럼만 필터링하는 기능과 복사하기 기능도 추가할 수 있다.

buttons =c(I('colvis'),'copy','csv', 'excel','print','pdf')

 

Column visibility 클릭 시 컬럼명이 나오고, 컬럼명 클릭시 datatable에서 해당 컬럼이 사라진다.

 


단, options 가 들어가면 기본으로 있던 Show 10 entries 기능이 사라져, options 안에 pageLength = 10 를 추가해 원하는 entry 개수를 조절할 수 있다.

 

컬럼 수가 많아져 한 페이지 안에 데이터가 다 들어오지 않을 경우 가로방향 스크롤이 자동으로 적용된다. 

 

iris data를 두 개 붙여 10개의 컬럼을 가진 데이터를 만들어 datatable로 찍어보았다.

스크롤을 오른쪽으로 끝까지 밀었을 때 모습이다. 

 

오른쪽 상단에 있던 Search나 오른쪽 아래에 있던 페이지 넘기는 부분까지도 가운데로 스크롤 된 모습니다.

이를 해결하는 방법은 options 안에 scrollX = T 를 넣어주면 된다.

 

 

scrollX = T를 적용 후 마찬가지로 스크롤을 오른쪽 끝까지 민 모습니다. 다른 기능들은 멈춘 채 가운데 데이터에만 스크롤이 적용된다.

 


8. class

class는 테마라고 생각하면 된다. 기본 테마는 "display" 이고 다른 외에도 "cell-border", "compact", "hover", "nowrap", "order-column", "row-border", "stripe" 등이 있다. 

 

각 class에 대한 설명은 다음과 같다.

 

출처 : datatables.net/manual/styling/classes

 

"cell-border"로 선택했을 때 결과는 다음과 같다. 기존 row 에 엇갈리게 색상이 들어가 있던것이 없어졌다.

 


최종 코드와 만들어진 마크다운 파일도 첨부한다.

 

datatable tutorial.Rmd
0.00MB
datatable-tutorial.html
4.81MB

반응형