R factor level 확인 - R factor level hwag-in

안녕하세요 여러분! 저번 시간에 R의 데이터 타입 중 벡터에 대해서 배워보았습니다!

이번 시간에는 Factor에 대해 알아보도록 하겠습니다!

Factor에 대해 알아보기 전에 먼저 통계에 관한 기초 지식부터 잡고 갈게요!

통계에서 자료는 일반적으로 수치형 자료(numerical data)와 범주형 자료(categorical data),

이 두 가지로 구분됩니다.

먼저 수치형 자료란 관측된 값이 수치로 측정되는 자료를 말합니다.

예를 들면 키나 몸무게, 성적과 같은 자료들이 모두 수치형 자료입니다.

이에 비해 범주형 자료는 관측 결과가 몇 개의 범주 또는 항목의 형태로 나타나는 자료를 말합니다.

성별은 로 범주화 되어 있고 혈액형은 ‘A’,’B’,’AB’,’O’로 범주화 되어 있잖아요!

이런 자료들을 범주형 데이터라고 합니다.

그런데 이 범주형 데이터는 또 두가지로 나눌 수 있는데요

바로 순위형과 명목형으로 나눌 수가 있습니다.

순위형 자료란 범주 간에 순서의 의미가 있는 자료를 말하는데요

예를 들어서 성적을 “A”,”B”,”C”,”D”,”E”로 범주화 했을 때

이들 간에는 순서가 존재합니다.

하지만 명목형 자료란 범주들 간에 순서가 의미 없는데요

앞에서 예로는 성별과 혈액형은 값들 간의 순서가 없습니다.

이 기본적 통계 지식을 알아야 R의 범주형 데이터 factor를 더 쉽게 이해할 수 있어서

설명 드렸습니다!

그러면 본격적으로 팩터(Factor)에 대해 알아보겠습니다!

팩터는 범주형 자료로 순위척도라든가 명목척도를 지원해주는 자료입니다.

앞에서도 예를 들었 듯, 직업, 학년, 성별, 세대 등을 표현하기 위한 것이죠.

앞서 배운 벡터와 완전히 다른 것이 아니라 이런 범주형 자료를 다루는 벡터의 특수한 형태가 팩터입니다.

다른 언어에는 없고요.

R에 존재하는 이유는 팩터는 범주형 데이터다 보니 비교를 때 많이 쓰는데

데이터 분석 처리할 때 또한 비교를 많이 하기 때문에 R에서는 이 factor가 강력하다고 할 수 있습니다.

그럼 이제 factor를 어떻게 생성하는지 볼게요!

함수와 인수들을 정리해보면 다음과 같습니다.

factor(데이터, levels=수준, labels=이름, ordered=T 순서형 전환)

하나씩 차차 알아보도록 할게요!

제가 한 코딩을 첨부해볼게요!

R factor level 확인 - R factor level hwag-in

첫 줄부터 보면 blood라는 변수에 “B”, “AB”, ”O”, ”A”, ”O”, ”O”, ”A”, ”B” 라는 값들을 입력해 벡터를 생성합니다.

그런 후 factor()함수를 사용하여 factor로 만들어준 후에 blood_factor라는 변수에 저장하는 것이죠!

그랬을 때 blood_factor를 출력하면

R factor level 확인 - R factor level hwag-in

이렇게 나오는 것을 알 수 있죠?

분명 벡터를 출력하는 것과는 다릅니다.

각각의 요소를 감싸던 “ “가 없어지고

Levels라는 것이 생겼네요!

Levels가 뭘까요?

level은 범주의 종류라고 생각하면 됩니다. 제가 “B”, “AB”, ”O”, ”A”, ”O”, ”O”, ”A”, ”B” 라는 값들을 입력했으니

A, AB, B, O가 범주의 종류를 이루겠네요! 나오는 순서는 알파벳 순입니다.

level이 뭔지 알고 싶으면 levels() 함수를

level의 개수를 알고 싶으면 nlevels()이라는 함수를 사용하면 됩니다.

또한 level의 종류와 특정 레벨에 해당하는 빈도수를 확인하고 싶으면

table()함수를 쓰면 됩니다.

R factor level 확인 - R factor level hwag-in

이렇게요!!

이제 factor로 바꿔주는 함수 factor()에 대해 배웠으니

그 안의 인수들을 하나씩 살펴볼까요?

먼저 levels 인수는 왜 필요할까요?

R factor level 확인 - R factor level hwag-in

위의 주석에도 써 놓았지만 내 자료에는 “AB”라는 값이 입력되지 않았지만

A,B,AB,O라는 혈액형을 모두 나타내고 싶을 때가 있잖아요?

그럴 때 levels= 인수를 추가해 “AB”라는 level도 추가해주면 됩니다.

table()함수를 사용해 빈도를 확인해보면 AB라는 값은 입력되지 않았으니 빈도수가 0인 것을 확인할 수가 있죠??

그런데 여기서 level의 순서를 보세요!

A, AB, B, O이죠? 제가 앞에서도 말씀드렸지만 default값은 알파벳 순입니다.

순서를 바꾸고 싶을 때도 역시 levels= 인수를 사용하면 됩니다.

해볼게요!

R factor level 확인 - R factor level hwag-in

이렇게 levels들의 순서를 지정해 준 후 blood_factor2를 출력하니 순서가 사용자 지정대로 되었죠?

이제는 labels= 인수에 대해 알아볼게요!

levels들의 이름을 바꿀 수 있습니다. 이 때 사용하는 것이 labels 인수인데요

levels를 이용하거나 labels를 이용하거나 할 수 있는데요

예제를 볼게요!

R factor level 확인 - R factor level hwag-in

levels 함수를 사용한 후 그곳에 지정할 이름을 할당해도 좋구요.

아니면 factor를 만들 때 labels 인수를 만들어도 좋습니다.

그러면 이제 마지막 인수인 ordered=T에 대해 알아보겠습니다.

앞서 통계에서 사용하는 자료 유형에 대해 말하다가

범주형 변수에는 순위형과 명목형이 있다고 말씀드렸죠!

이를 조정해주는 것이 ordered= 인수입니다.

ordered T로 설정해주면 순서가 있는 순위형

F로 설정하면 순서가 없는 명목형이 됩니다. default 값은 F입니다.

앞선 blood_factor에는 ordered 인수를 설정해주지 않으니 순서가 없는 명목형이겠죠?

이런 명목형에서는 원소들을 비교하는 것이 무의미합니다.

예를 들어

R factor level 확인 - R factor level hwag-in

이렇게 첫번째 원소인 “B”를 추출하고 두번째 원소인 “AB”를 추출하여 무엇이 더 큰지 비교해보는 비교연산자를 사용하면

경고 메시지가 뜨게 됩니다.

그러면 순위형으로 바꾸기 위해 ordered=T 이렇게 설정한 예도 들어볼게요

사이즈는 범주형 변수이나 순서가 있잖아요?

R factor level 확인 - R factor level hwag-in

orderedT로 설정했고 levels 인수도 이용해 s부터 m, l 이 순서대로 level을 설정했습니다.

그 후 첫번째 원소를 추출하고 두 번째 원수를 추출해서 비교 연산자를 사용해봤는데

아까처럼 경고 메시지를 뜨지 않네요!

이렇게 ordered 인수를 사용하여 순위형으로 바꿔주면 순서가 생기고 비교가 가능해집니다.

이렇게 해서 오늘은 factor를 생성하는 함수와 그 함수를 세밀하게 조정하는 여러 인수에 대해서 살펴보았습니다!

다음에는 matrix로 찾아뵐게요!!