본문 바로가기
5. 자료구조/5) 요인 | factor()

R에서 여러 요인(factor)들이 결합된 요인을 만들어주는 interaction 함수

by makhimh 2020. 1. 18.
반응형

R에서 여러 요인(factor)들이 결합된 요인을 만들어주는 interaction 함수


다섯 사람이 있다고 해봅시다. 다섯 사람의 성별과 혈액형은 아래와 같습니다. 


gender=factor(c('M','M','F','M','F'),levels=c('M','F'))

b_type=factor(c('A','O','AB','B','A'),levels=c('A','O','AB','B'))


interaction 함수를 적용해보겠습니다. 


> interaction(gender,b_type)

[1] M.A  M.O  F.AB M.B  F.A 

Levels: F.A M.A F.AB M.AB F.B M.B F.O M.O


위와 같이 두 요인이 결합된 요인을 반환해줍니다. level을 보면 두 요인의 level 조합으로 나올 수 있는 모든 경우의 level이 계산되었습니다. level이 생성된 순서를 보면, 입력된 요인순서 + 알파벳 순서의 조합임을 알 수 있습니다. 요인1의 알파벳 순서 F M이 반복되고, 요인 2가 알파벳 순서로 붙습니다. 


이제 함수의 옵션을 알아봅시다 .


interaction(..., drop = FALSE, sep = ".", lex.order = FALSE)


drop옵션부터 차례로 알아봅시다. 


drop옵션은 실제 사용되지 않은 level을 유지할지, 없앨지를 결정합니다. 


두 결과를 비교해봅시다. 


> interaction(gender,b_type)

[1] M.A  M.O  F.AB M.B  F.A 

Levels: M.A F.A M.O F.O M.AB F.AB M.B F.B


> interaction(gender,b_type,drop=TRUE)

[1] M.A  M.O  F.AB M.B  F.A 

Levels: M.A F.A M.O F.AB M.B


drop=TRUE 라고 옵션을 설정하면 실제로 나타나지 않는 조합들은 level에서 사라집니다. 



sep 옵션은 무엇인지 이미 아셨을텐데요. 두 요인이 결합될 때, 사용되는 기호입니다. 디폴트는 .  인데요. 콜론기호로 바꿔보면 아래와 같습니다. 


> interaction(gender,b_type,drop=TRUE,sep=':')

[1] M:A  M:O  F:AB M:B  F:A 

Levels: M:A F:A M:O F:AB M:B


마지막은 lex.order 옵션입니다. 두 결과를 비교해봅시다. lex.order을 false로 할 경우 요인순서+알파벳 순서였는데요. lex.order을 TRUE로 놓으면 M과 A,O,AB,B 가 조합된 뒤에, F와 A,O,AB,B가 조합됩니다. 


> interaction(gender,b_type)

[1] M.A  M.O  F.AB M.B  F.A 

Levels: M.A F.A M.O F.O M.AB F.AB M.B F.B


> interaction(gender,b_type,lex.order=TRUE)

[1] M.A  M.O  F.AB M.B  F.A 

Levels: M.A M.O M.AB M.B F.A F.O F.AB F.B


반응형

댓글