2013-04-22 4 views
1

약 10 000 행의 "데이터"라는 DF가 있습니다 (설명을 위해 10,000이라고 말합니다).R의 과도하게 채워진 빈

data$SimDeltaClass = 
     ifelse(data$SimDelta>0.75, ">0.75", 
     ifelse(data$SimDelta<0.75&data$SimDelta>0.5, "0.5-0.75", 
     ifelse(data$SimDelta<0.5&data$SimDelta>0.25, "0.25-0.5", 
     ifelse(data$SimDelta<0.25&data$SimDelta>0, "0-0.25", "void")))) 
: 나는 내가이 코드 조각을 사용하여 만든다 4 개 종류 (0-0.25, 0.25-0.5,0.5-0.75, 및> 0.75)에 넣고 싶다 "SimDelta"라는 숫자 열이 ==

text(x=1,y=1.07,length(data$rMF[data$SimDeltaClass=="0-0.25"]),cex=0.8,col="black") 
text(x=2,y=1.07,length(data$rMF[data$SimDeltaClass=="0.25-0.5"]),cex=0.8,col="black") 
text(x=3,y=1.07,length(data$rMF[data$SimDeltaClass=="0.5-0.75"]),cex=0.8,col="black") 
text(x=4,y=1.07,length(data$rMF[data$SimDeltaClass==">0.75"]),cex=0.8,col="black") 

이 섹션 (길이 (데이터 $ RMF [데이터 $ SimDeltaClass :이 다음 네 가지 범주 상자 그림 각 카테고리에서 샘플의 개수에 플롯

사용하여 상자 위에 작성된 "0-0.25"]))는 그룹당 숫자를 제공해야합니다. 이 4 카운트가 합쳐지면 14000을 초과하는 값을 얻게됩니다. 예상했던 10000보다 훨씬 더 큽니다.

왜 카테고리가 올바르게 형성되지 않습니까? 내가 썼던 이전 작품에 근거하여 완벽하게 작동하는 R (또는 나 자신)이 무엇을 고민하고 있는지 잘 모릅니다.

은 분명히 나는 ​​그들이 잘못 포함 된 값을 할당하기 때문에 ifelse() 섹션을 편집해야합니다,하지만 난

주를 어떻게 해야할지하지 않습니다 오류 메시지 나 경고 &이 STR이 (가 없습니다)은 작동하는 버전과 동일합니다.

답변

2

길이에 기여하는 NA가있는 것 같습니다.

> x = c(1, NA) 
> x[x==1] 
[1] 1 NA 

사용 cut보다는 ifelse합니다 (labels= 인수없이 기본 더 낫다).

set.seed(123); x = c(runif(10, -1, 2), NA) 
y = cut(x, c(-Inf, seq(0, .75, .25), Inf), 
     labels=c("void", "0-0.25", "0.25-0.5", "0.5-0.75", ">0.75")) 

데이터를 요약하는

> y 
 [1] void     >0.75    0-0.25   >0.75    >0.75    void     0.5-0.75 >0.75    
 [9] 0.5-0.75 0.25-0.5 <NA>     
Levels: void 0-0.25 0.25-0.5 0.5-0.75 >0.75 

사용 table에 이르는.

> table(y) 
y 
    void   0-0.25 0.25-0.5 0.5-0.75    >0.75  
       2        1        1        2        4  
> table(y, useNA="ifany") 
y 
    void   0-0.25 0.25-0.5 0.5-0.75    >0.75     <NA>  
       2        1        1        2        4        1  

text은 벡터화되어있다. (rg255 의해 시험)

text(1:4, 1.07, table(y)[2:5]) 

전체 용액

data$SimDeltaClass <- cut(data$SimDelta, c(-Inf, seq(0, .75, .25), Inf), 
    labels=c("void", "0-0.25", "0.25-0.5", "0.5-0.75", ">0.75")) 
text(x=1:4, y=1.07, table(data$SimDeltaClass[fdr])[2:5], cex=0.8, col="black") 
관련 문제