2013-04-25 1 views
3

변수 (COLOR)가있는 데이터 세트 (DATA라고 함)가 있습니다. COLOR 모드는 숫자이며 클래스는 factor입니다. 먼저, "숫자"에 대해 조금 혼란 스럽습니다. COLOR에 대한 데이터는 숫자가 아니며, 흰색 또는 파란색 또는 검정색과 같은 모든 문자 값입니다.이 부분에 대한 설명은 감사하겠습니다.변수에 대한 참조 레벨 변경 R

또한 COLOR 변수의 수준을 반환하고이 변수의 현재 참조 수준을 결정하고 마지막으로이 변수의 참조 수준을 White로 설정해야합니다. 나는 요인을 사용하여 시도했지만, 완전히 실패했습니다.

시간을내어 도와 주셔서 감사합니다.

+0

당신이 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – dickoa

+0

도'통계 :: 대조를 볼 수 있도록 어려울 것이다 '. –

답변

5

mode(DATA$COLOR)"numeric"입니다. R은 내부적으로 계수를 저장하기 위해 숫자 코드 (공간 절약 용)와 코드 값에 해당하는 레이블의 연관된 벡터를 저장하기 때문입니다. 요인을 인쇄 할 때 R은 각 코드에 대해 해당 레이블을 자동으로 대체합니다.

f <- factor(c("orange","banana","apple")) 
## [1] orange banana apple 
## Levels: apple banana orange 
str(f) 
## Factor w/ 3 levels "apple","banana",..: 3 2 1 
c(f) ## strip attributes to get a numeric vector 
## [1] 3 2 1 
attributes(f) 
## $levels 
## [1] "apple" "banana" "orange" 
## $class 
## [1] "factor" 

... 난 ... 색상 변수의 수준을 반환하는 R 코드를 작성해야

levels(DATA$COLOR) 

... 다음이 변수의 현재 기준 레벨을 결정

levels(DATA$COLOR)[1] 

... 마지막으로이 변수의 참조 레벨을 흰색으로 설정하십시오.

코드없이
DATA$COLOR <- relevel(DATA$COLOR,"White") 
+0

이것이 작동하는 것 같았습니다. 정말 고마워요. 한 번 더 요청 : 변경 사항이 적용되었는지 확인하려면 어떻게해야합니까? 레벨 (DATA $ COLOR) [1]을 다시 사용하면 새롭게 레벨이 조정 된 참조가 아니라 원본을 인쇄합니다. –

+2

정말입니까? '레벨 (factor (letters), 'z')) [1]'! ='levels (factor (letters)) [1]' – Rcoster

+0

@Rcoster와 동의합니다. 아마도'relevel()'의 결과를'DATA $ COLOR' 변수에 할당하는 것을 잊었을 것입니다 ...? –

3

이것은 R stores factors의 결과입니다. 콘솔에서 볼 수있는 값은 문자처럼 보이지만 내부적으로 숫자로 저장됩니다 (여기서는 범위를 벗어날 수 있음).

레벨을 복구하려면 levels(DATA$COLOR)을 입력 할 수 있습니다. 더 많은 것을보기 위하여 콘솔에 ?factor?levels을 보아라. 레벨을 다시 작성하려는 경우 요소를 입력하고 reproducible example을 추가하면 코드를 살펴볼 수 있습니다.

+0

아, 내 기억 장치에 대해 무슨 뜻인지 알 겠어. 분명히 말해 줬어. 나처럼 R 초보자에게 약간 혼란 스러웠다. –