2014-05-09 4 views
0

이 답변은 매우 분명 할 수 있습니다 (나는 그렇 겠지만). 제가하고 싶은 것은 조건 적으로 다른 요소의 수준에 따라 요인을 재평가하는 것입니다. "5", 어떻게 내가 가진 사람들에 "6"의 새로운 "기어"수준을 할당 할 수의 장비 수준이 그 차 중에서 지금조건부로 R의 요소를 다시 계산하십시오.

data(mtcars) 
mtcars$gear <- as.factor(mtcars$gear) 
mtcars$am <- as.factor(mtcars$am) 

table(mtcars$gear, mtcars$am) # examining the levels 
levels(mtcars$gear) 
# [1] "3" "4" "5" 
levels(mtcars$am) 
"0" "1" 

:

다음은 mtcars 데이터 세트를 사용하여 예제 "기어"에 대한 요소 레벨 "3", "4", "5"를 유지하면서 "1"의 "am"레벨? 이것은 훨씬 간단한 예제이지만, 데이터 세트의 복잡성을 감안할 때 벡터를 요소로 유지하는 것이 좋을 것입니다 (예 : 숫자 및 백으로 변환하지 않음).

답변

2

하나를 만들 필요가 그래서 시작하는 기어에는 "6"수준은 없습니다 :

levels(mtcars$gear) <- c(levels(mtcars$gear), "6") 

그런 다음 조건부 [<- 기능을 할당 할 수 있습니다

mtcars$gear[ mtcars$am==1 ] <- "6" 
table(mtcars$gear, mtcars$am) 

    0 1 
    3 15 0 
    4 4 0 
    5 0 0 
    6 0 13 

당신은 할 수 없습니다 factor 속성에 해당 'level'이 없으면 값을 factor 변수에 할당합니다.

+0

아름답고 간단한 해결책! (내 Rube Goldberg-esque 해결 방법은 숫자와 백으로 변환해야했습니다.) – statsRus

+0

나는 오류가 발생하기 쉬운 요소를 발견했습니다. 나는 일반적으로 분석을 실제로 수행 할 준비가 된 문자 또는 정수로 모든 것을 남겨 두는 것을 선호합니다. Mayo Clinic이'options (stringsAsFactors = FALSE)'명령을 요구한다고 Terry Therneau는 말합니다. –

+0

끝날 때까지 요소를 떠나는 좋은 워크 플로 팁! 나는 궁금해. 일반적으로 R의 요소와 관련하여 오류가 발생하기 쉬운 것을 찾았습니까? – statsRus

관련 문제