如何从数据框中的摘要统计中创建一个布尔变量?

时间:2014-02-12 21:58:05

标签: r boolean max sapply tapply

我想创建一个布尔列,说明每个样本是否为最大值。 我创建了这个函数并将其与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 个答案:

答案 0 :(得分:1)

是的,您可以使用tapply

在一行中执行此操作
tapply(y,f,function(x) round(x,5)==round(max(x),5))