티스토리 뷰

728x90

◆ Wide Format: 사람이 읽기에 좋은 포맷

                       행(row)에 한 명의 정보를 담음

                       열(column)에 모든 요인(factor)의 level을 담음

sample ID sex age condition A condition B
1 female 38 9 b
2 male 29 8 b
3 male 41 9 a

- 3 개의 factor (sex, age, condition)를 가지는 디자인

- 각 factor는 sex, age, condition이며, condition은 A, B의 level을 가짐 (cell의 숫자는 각 항목의 값)

 

 

◆ 위 디자인의 회귀식을 R에서 구하면 다음과 같다

aov(score ~ sex + age + condition)

Wide 형식에서는 condition이 2 개의 열이므로 하나의 요인으로 처리가 어렵다.

이를 Long 형식으로 치환하면 각 열에 factor를 배치하게 되므로 간단히 처리할 수 있게 된다. 

 

◆ Long Format: 열을 factor 별로 정리, 한 행은 wide form에서 특정 cell의 정보를 반영

Sample ID sex age condition score
1 female 38 A 9
2 male 29 A 8
3 male 41 A 9
1 female 38 B b
2 male 29 B b
3 male 41 B a

 

R에서 wide format을 long format으로 바꾸는 방법은 reshape2 패키지의 melt 함수를 이용하는 것

reshape2에서

wide format -> long format : melt()

long format -> wide format : dcast() 를 이용

library(reshape2)
long.format <- melt(wide.format, id.var = c("age", "sex"), 
				variable.name = "condition", value.name="score")

여기에서 id.var는 포맷을 바꾸지 않고 유지하는 항목을 넣으면 되고,

condition과 같이 변환해야 하는 항목은 variable.name으로 지정하고

value를 넣을 변수 명을 value.name에 지정하면 된다.

 

# formula: rowvar1 + rowvar2 + ... + colvar1 + colvar2 + ...
dat.wide <- dcast(dat.long, age + sex ~ condition, value.var = "score")

# function 추가 가능 (aggregation)
dat.wide <- dcast(dat.long, age ~ condition, mean, value.var = "score")

 

 
 

'데이터 분석 > 전처리' 카테고리의 다른 글

오버샘플링 기법  (0) 2023.12.22
SQL, R 전처리 함수 모음  (0) 2023.12.22
Grayscale images to 3 channels for CNN  (0) 2023.02.08
numpy 행렬 나누기  (0) 2023.01.05
다층 모형을 위한 전처리  (0) 2023.01.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함