2013-04-25 1 views
2

변수가 VAR 인 데이터 세트 DATA가 있습니다. 이 변수 모드는 숫자이며 클래스는 하나의 요소입니다. 성별을 나타냅니다. "" "F" "M" "U"를, 및 주파수 테이블은 다음과 같습니다 : 인쇄 할 때,변수 값을 R에서 누락으로 설정하고 사용하지 않는 레벨을 내림

VAR 
    M 
    M 
    F 
    U 

    M 

나는 수준을 인쇄,이 출력 아래 같이 보입니다

 F  M  U 
2 30 25 1 

"F"또는 "M"이 아닌 모든 값을 누락 된 값으로 변경 한 다음 "Man"및 "Woman"레이블을 지정하고 변수의 사용되지 않은 레벨을 삭제합니다 (그러나 여전히 누락 수준). 지금까지 나는 아래의 코드가 있습니다

DATA$VAR[DATA$VAR == "U" | DATA$VAR == ""] <- NA 

을하지만 수준에 대해 동일한 값을 가지고, 지금은 주파수 테이블은 다음과 같습니다

I 가까이있어 같은 느낌
 F  M  U 
0 30 25 0 

, 그러나 아주 거기에서. 나는 수준 문제를 다루는 방법을 이해하지 못한다. 어떤 도움이라도 대단히 감사합니다.

+2

'droplevels (DATA)를 설정'또는'droplevels (데이터 $ VAR)'. – Justin

답변

4

M과 F가 모두 사라지는 요소를 만드는 요인을 생성하려면 호출 인수 내에서 levels을 사용하십시오. 이들은 labels 인수

a <- factor(c("M","M","F","U","","M")) 

a2 <- factor(a, levels = c('M','F'), labels =c('Male','Female')) 

a2 
# [1] Male Male Female <NA> <NA> Male 
# Levels: Male Female 

당신이 table에서 NA 값을 집계하려면를 사용하여 레이블을 다시 지정하려면 useNA = 'always' 또는 useNA='ifany'

table(a2, useNA = 'ifany') 
## a2 
## Male Female <NA> 
##  3  1  2 
2

필자는 요인 수준을 그냥 덮어 쓸 수 있다고 생각합니다.

a = factor(c("M","M","F","U","","M")) 
table(a) 
# a 
# F M U 
# 1 1 3 1 
levels(a)[!levels(a)%in%c("M","F")] <- NA 
table(a) 
# a 
# F M 
# 1 3 

편집 : 마찬가지로, 레이블을 다시 레벨 :

levels(a) 
# "F" "M" 
levels(a) <- c("Female","Male") 
3

또한 R의 droplevels() 함수를 가지고!

a = factor(c("M","M","F","U","M")) 

a.sub <- subset(a, a != "U") 

droplevels(a.sub)