티스토리 뷰

R/Process

[R] 팩터 (factor)

Aaron 2018. 12. 24. 12:30
반응형

팩터(Factor)



Factor "정해진 범주 내에서 카테고리별로 분석(범주형 자료 분석)을 하기 위해 주로 사용되는 데이터 자료형"입니다. 

그림으로 표현하자면 "하나의 통에 , 각각 범주가 있는 스마일들의 모임"과 같이 표현할 수 있습니다.




 남, 녀 / 상, 중, 하 같은, 중간에 다른 값이 포함될 수 없는 값을 범주형 데이터라고 합니다.

Factor 형 변수를 만들 때 사전에 정의되어진 범주이외는 정의되지 않기때문에, 정의되어있지 않는 데이터를 입력하면 NA로 처리됩니다.

(용어에서 범주 = 레벨 = 카테고리 다 같은 의미입니다.)


 성별 변수가 있다면, 정의되어진 레벨(남, 녀) 이외의 다른 값은 절대 허용되지 않는다는 뜻이죠.

범주형 자료분석에 주로 사용되고, 라인(범주)별로의 분포 비교를 할 때 유용합니다. 정해진 ~별 차이에 대해 분석하고싶다고 한다면 그 컬럼은 팩터화 될 수 있습니다.


 Factor 형 변수에는 명목형 자료과 순서형 자료로 나뉩니다.

명목형 자료: 특징적인 순서가 없는 범주 (남,녀)

순서형 자료: 순서가 있는 범주, 정렬 가능 (상,중,하)


factor("표현하고자하는 값", c("범주1", "범주2"))    # 명목형 자료

ordered("표현하고자하는 값", c("범주1", "범주2"))    # 순서형 자료


첫 번째 인자는 팩터로 표현하고자하는 값, 두번째 인자는 c("범주1", "범주1") 라는 범주 내에서 사용 가능하다는 것을 알려주는 것입니다.


> Gender <- factor("m", c("m", "f"))

> Gender

[1] m

Levels: m f



nlvels(팩터형 변수) : 중복을 제거한 팩터의 레벨(범주) 개수 리턴(=Distinct Value)
levels(팩터형 변수) : 팩터의 레벨 목록 리턴

> nlevels(Gender)

[1] 2

> levels(Gender)

[1] "m" "f"

 

 

Factor 형 변수 생성 방법(명목형 자료)



# 1) 팩터를 선언하면서 데이터 삽입

> var1 <- factor('a', c('a','b','c'))    # factor 형 scalar

> var1

[1] a

Levels: a b c


# 2) 변수에 먼저 데이터를 삽입한 후, 그 변수를 팩터형으로 선언

> var1 <- 'a'

> factor(var1, c('a','b','c'))     

[1] a

Levels: a b c


# 3) 여러개의 데이터 값을 갖는 상태에서 팩터를 선언하면, 그 안의 데이터 범주를 카테고리로 판단 

> var1 <- c('남','여','여','남')     

> var1 <- factor(var1)     # 정해진 값 내에서의 카테고리 범주가 레벨이 됨

> var1

[1] 남 여 여 남

Levels: 남 여



> var1 <- factor('a', c('a','b','c'))

> var1

[1] a

Levels: a b c

# 레벨 수정을 통해 정해진 값들을 수정할 수 있음 

> levels(var1) <- c('A','B','C')   # 먼저 삽인된 데이터가 범주에 포함되지 않으므로, 범주형으로 데이터가 수정됩니다

> var1

[1] A

Levels: A B C


> var2 <- 'a'

> var2 

[1] "a"


# factor 여부 확인

> is.factor(var1) 

[1] TRUE

> is.factor(var2)   # var2 변수는 factor 형 선언을 하지 않았으므로 FALSE 리턴

[1] FALSE



> var1 <- factor(c('a', 'c'), c('a','b','c'))

> var1

[1] a c

Levels: a b c


# factor 변수 var1의 level 확인

> levels(var1)

[1] "a" "b" "c"

> levels(var1)[2]   # 두 번째 레벨의 값 확인

[1] "b"


# factor 변수의 level 수정

> levels(var1) <- c("aaa","bbb","ccc")     # 여러 값을 넣기 위해 무조건 벡터 c() 를 사용

> var1     # 레벨 안에서 정의가 되어야하므로 원래 저장된 값 자체도 수정이 되어버림(내용 덮어쓰기)

[1] aaa ccc

Levels: aaa bbb ccc



Factor 형 변수 생성 방법(명목형 자료)


# 팩터의 레벨을 지정해주는 이유는 팩터의 레벨 순서를 지정해주기 위함입니다.

> factor(c("대","소","대","중"), c("소","중", "대"))

[1] 대 소 대 중

Levels: 소 중 대

# 팩터를 지정하지 않을 경우, '가나다', '알파벳', '숫자' 순으로 레벨이 지정됩니다.

> factor(c("대","소","대","중"))

[1] 대 소 대 중

Levels: 대 소 중


# 여기서 ordered 함수를 사용하면 순서형 팩터를 생성할 수 있습니다.

> ordered(c("대","소","대","중"), c("소","중", "대"))

[1] 대 소 대 중

Levels: 소 < 중 < 대



관련 참고 글

[R] 스칼라(scalar) + NA, NULL <- 단일 차원의 값(단 하나의 원소값)


[R] 팩터 (factor) <- 범주형 데이터(정의되어있는 카테고리)를 표현하기 위한 데이터 구조


[R] 벡터(vector) <- 1차원에 여러개의 데이터가 모인 데이터의 집합(스칼라의 모임)(=배열)

    

[R] 리스트(list)  <- Key-value 형태로 저장되는 데이터 구조


[R] 행렬(Matrix) <- 행과 열의 구조를 갖는 2차원 배열 구조


[R] 배열(Array) <-  동일한 데이터 타입으로 구성된 다차원 데이터구조


[R] 데이터 프레임(Date Frame) <- 엑셀 시트와 유사한 표 형태를 가진 데이터 구조






참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성

 

 

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday