2013-10-04 3 views
0

read.xlsx 명령을 사용하여 데이터 스프레드 시트를 R로 가져 왔지만 올바르게 측정되지 않았기 때문에 데이터에 산재 된 Low 요소가 있습니다.데이터 집합의 누락 된 값을 숫자로 바꾸시겠습니까?

그래서 데이터의 예를 들어 열은 다음과 같습니다

[15, 6, Low, 23, 39, Low] 

나는 숫자 값으로 Low 요소를 교체 할하지만 같은 명령하려고하면

data[3,2] <- 4 #을 .... ,내가 as.character, as.numeric의 다양한 조합을 시도했습니다

Warning message: 
In '[<-.factor '('*tmp*', iseq, value = 4): invalid factor level, NAs generated. 

: .I 다음과 같은 오류 메시지가하지만이 오류 메시지가 모두 표시되지는 않습니다.

이 방법은 Low 요소를 누락 된 값으로 변환하는 것이라고 들었지만이 작업을 수행하고 숫자로 대체하려고하면 여전히 동일한 오류 메시지가 표시됩니다.

+2

데이터를 가져 오기 전에'option (stringsAsFactors = FALSE)'를 설정하십시오. 그러나, 당신은 어떤 계산을하기 전에 숫자로 강요 할 필요가있는 문자 변수로 끝날 것입니다. 또한 '낮음'값을 'NA'(알 수없는 값을 나타냄)로 설정하고 그대로 두십시오. R에는 'NA'를 처리 할 수있는 시설이 있습니다. 'read.table' (그리고 다른 데이터 임포트 함수들)은 가져 오는 동안'Low'를'NA'로 강요하는'na.strings' 매개 변수를 가지고 있습니다. – Roland

+0

[교차 게시] (http://www.talkstats.com/showthread.php/49964-R-how-best-to-replace-a-missing-value-in-a-dataset-with-a-numeric) 당신이 그렇게하고 있다는 것을 밝히지 않고도 무례한 것으로 간주됩니다. –

답변

0

요인은 사전 정의 된 값만 허용하는 변수 유형입니다. 다음과 같은 요인 그래서 만약 :

fac <- factor(c("15","6","Low","23","39","Low")) 

을 다음 값의 predefinded 집합은 다음과 같습니다

R> levels(fac) 
[1] "15" "23" "39" "6" "Low" 

당신이 velue로 "4" 속성 싶은 경우에, 당신은 당신의 요소 레이블을 변경해야 하나 :

R> factor(fac, levels=c("15","23","39","6","Low"), labels=c("15","23","39","6","4")) 
[1] 15 6 4 23 39 4 

또는 첫번째 문자 벡터로 변환 :

R> v <- as.character(fac) 
R> v[v=="Low"] <- "4" 
R> v 
[1] "15" "6" "4" "23" "39" "4" 
+0

잘 작동합니다. 기타 질문이 1 개 더 있습니다 : 데이터에 '낮음'이 표시되는 방식이 다양하기 때문에 v == "낮음"으로 언제든지 선택할 수 있습니다. 예 : 데이터 = [5 6 낮음 <13 27 <낮은 14 낮은 *] 내가 시도 : 이 이 V [그렙 ("저", V)] <- "4"하지만이 작동하지 않았다,이 오류 메시지가 반환 : 경고 메시지 : 를 '[<-. factor'('* tmp *', iseq, value = 4) : 유효하지 않은 요소 수준, NAs가 생성되었습니다. – user2846211

+0

'grep' 호출 전에'as.character (v)'를 사용 했습니까? – juba

+0

아, 고쳐주세요! 감사 – user2846211

관련 문제