DATOR


분석 준비 단계 : 분석 프로그램 입문 Factor Object

- Factor object는 코드형 데이터를 값(value)으로 저장

- (A, O, B, AB)구분

- 코드형이란 혈액형(A, O, B, AB), 성별(F,M), 성적(A등급,> B등급,C,D,F)과 같은 데이터

-즉 원칙적으로는 사칙연산 불가

- ordered() 순위를 부여한 후에, 숫자로 변환하고 나서는 연산 가능

- levels()로 범주 목록이 있다. 범주목록 외의 값을 입력하면 <NA>


(1) Factor object는 코드형 데이터를 저장

 

Factor Object는 고객만족도 조사 데이터, 고객 등급, 혈액형등을 입력

아래 예에서는

"very_bad" "bad" "normal" "good" "very_good“만 입력될 수 있도록 Factor Object를 생성

#범주로 사용할 범주목록을 c() 로 입력 하면, 아직 typeof 문자로 인식

#vector 에서는 character type로 인식

> vG<-c("very_bad","bad","normal","good","very_good")

> vG

[1] "very_bad" "bad" "normal" "good" "very_good“

 

> is.vector(vG)

[1] TRUE

 

> typeof(vG)

[1] "character“

 

 

 

 

(3)#factor()로 변환 후 levels 가 발생:서열성이 없음

# type에서 vector에서는 chracter로 인식,

# factor 변환한 후 integer 타입으로 인식되고 있음을 유의

> fvG<-factor(vG)

> fvG

[1] very_bad bad normal good very_good

Levels: bad good normal very_bad very_good

 

 

(4)levels 외의 값 입력시 <NA> 가 됨

 

> vG<-c("very_bad","bad","normal","good","very_good")

> fvG<-factor(vG)

#범주목록 값 이외값 입력시, <NA> 

> fvG[6]<-"ggod"

Warning message:

In `[<-.factor`(`*tmp*`, 6, value = "ggod") :

invalid factor level, NA generated

 

> fvG

[1] very_bad bad normal good very_good <NA>

Levels: bad good normal very_bad very_good

 

# level범주 목록을 알 수 있다.

#코드값의 순위를 정하지 않은 경우 알파벳순임-앞글자

> levels(fvG)

[1] "bad" "good" "normal" "very_bad" "very_good"

 

# levels()첫 번째 범주목록 값을 확인

>levels(fvG)[1]

[1] "bad“

 

 

# nlevels()로 범주목록 개수

#5개의 levels가 있다.

> nlevels(fvG)

[1] 5

 

(3) levels()에 인식하고있는 코드 외의 값 입력 시 메시지 확인

범주목록 값외에는 데이터를 입력할 수없음(<NA>)

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

 

> levels(gender)

[1] "f" "m"

 

> gender[1]

[1] f

Levels: f m

 

> gender[2]<-"ff"

Warning message:

In `[<-.factor`(`*tmp*`, 2, value = "ff") :

invalid factor level, NA generated

 

> gender

[1] f <NA>

Levels: f m

 

> gender[3]<-"m"

 

> gender

[1] f <NA> m

Levels: f m

 

 

(4) integer로 인식하고 있지만 사칙연산이 되지 않는다.

> fvG<-factor(vG)

> fvG

[1] very_bad bad normal good very_good

Levels: bad good normal very_bad very_good

 

> levels(fvG)[1]+levels(fvG)[2]

Error in levels(fvG)[1] + levels(fvG)[2] :

non-numeric argument to binary operator

 

> fvG[1]+fvG[2]

[1] NA

Warning message:

In Ops.factor(fvG[1], fvG[2]) :

요인(factors)에 대하여 의미있는 ‘+’가 아닙니

> typeof(fvG)

[1] "integer“

> data.class(fvG)

[1] "factor“

 

(5)##숫자로 보이지만 facotr

> x<-c("1","2","1","1")

[1] "1" "2" "1" "1"

> gender2<-factor(x)

> gender2

[1] 1 2 1 1

Levels: 1 2

> levels(gender2)

[1] "1" "2"

 

(6) 아래 오점척도의 질문을 입력.

아래와 같은 질문에 대하여 설문조사한 결과

1번 응답자는 3번을 선택

2번 응답자는 4번을 선책

3번 응답자는 5번 선택한 설문지를 분석프로그램에 입력

 

 

질문1) 귀하는 A사의 서비스에 대해서 만족도가 어떻게 되십니까?

 

"very_bad" "bad" "normal" "good" "very_good“

 

f_6<-c("normal","good","very_good")

 

> (f_6_level<-factor(f_6, c("very_bad","bad","normal","good","very_good")))

[1] normal good very_good

Levels: very_bad bad normal good very_good

 

 

 

 _Rfundamental_factor.gif


 

발췌

RFundamental_cover.jpg

Tag

Leave Comments


Profile

profileanalysis에 관련된 question에 대한 Answer