의학 데이터는 대부분 엑셀 파일로 테이블 형태로 구성됩니다. 그러나 때에 따라서는 Row – Column으로 구성된 형식을 Key – Value 형식으로 바꿔야 할 때가 있습니다.
간단한 테이블 구조는 엑셀에서 로데이터 (raw data)를 바꿔버리는 것이 빠를 수도 있으나, 특히 key – value 페어링은 엑셀에서 바로 하기 쉽지 않습니다.
이에 대해 간단히 정리한 예제를 업로드합니다.
ipynb 파일 [링크]
- 유명한 dataset 인 iris 세트를 이용했습니다.
- tidyr / dplyr 라이브러리를 사용합니다.
- 중요한 함수인 gather / group_by / spread 의 예제들입니다.
- 특히 gather와 spread는 반대되는 역할을 합니다.
작성일: 2021.1.11 by Junn¶
Gather function example:¶
In [20]:
library(datasets)
data(iris)
head(iris)
In [21]:
library(tidyr)
library(dplyr)
In [31]:
head(gather(iris,key="attr", value="measure", -Species))
# 나머지는 자연스럽게 (+) 가 붙는 식
head(gather(iris,key="attr", value="measure", Sepal.Length, Sepal.Width))
# 나머지는 자연스럽게 (-) 가 붙는 식
Group_by function example:¶
In [24]:
df.new = iris %>% gather(key="attr", value="measure", -Species)
In [25]:
head(df.new)
In [27]:
df.new %>% summarise(
mean_measure = mean(measure)
)
In [29]:
df.new %>% group_by(Species) %>% summarise (
mean_measure = mean(measure)
)
In [30]:
df.new %>% group_by(Species, attr) %>% summarise (
mean_measure = mean(measure)
)
Table -> Key-value pair > Table¶
In [42]:
head(iris)
head(iris %>% mutate(idx=row_number()) %>% relocate(idx))
# relocate: 해당 컬럼을 맨 좌측으로 옮김
kv_table = iris %>% mutate(idx=row_number()) %>% relocate(idx) %>%
gather(key="key", value="value", -idx)
In [43]:
head(kv_table)
In [45]:
df = kv_table %>% spread(key="key",value="value") %>% relocate(idx,Sepal.Length,Sepal.Width)
head(df)
In [ ]: