2014-02-12 5 views
0

각 샘플이 최대 값인지 여부를 나타내는 부울 열을 만들고 싶습니다. 나는이 기능을 만들어 tapply 함께 사용 :데이터 프레임의 요약 통계로부터 부울 변수를 만드는 방법은 무엇입니까?

is.max <- function(x){ 
    x <- data.frame(x) 
    x$x <- round(x$x,5) 
    x_max <- round(max(x),5) 
    for(i in 1:nrow(x)) { 
    if(x$x[i] == x_max) x$is.max[i] <- T 
    else x$is.max[i] <- F 
    } 
return(x$is.max) 
} 

y <- c(rnorm(10), runif(10), rnorm(10,1)) 
f <- gl(3,10) 
m <- tapply(y,f,is.max) 

하지만 할 수있는 더 효율적인 방법은 무엇입니까?

{P.S. 사실 실제 데이터로는 sapply을 사용했습니다. is.maxes<-sapply(s, function(x) is.max(x[,"Sum"]),simplify=F)}

답변

1

그래, 당신이 tapply 하나 개의 라인에서이 작업을 수행 할 수 있습니다 :

tapply(y,f,function(x) round(x,5)==round(max(x),5)) 
+0

을 거 그 기억 안녕하세요 와우 난! – plamtrue

관련 문제