1

平均プラス標準偏差よりも大きいグループごとにケースを特定したいと思います。たとえば、種をグループとして使用し、petal.wid を虹彩データの変数として使用します。

より良い方法は何ですか?関数を作成しますか?

これを作ったのですが、事件を特定するための元データとの関連付けができません。

data(iris)
library(plyr)
petal.wid.avg <- ddply(iris, .(Species), function(df)
  return(c(petal.wid.avg=mean(df$Petal.Width), petal.wid.sd=sd(df$Petal.Width)))
)
petal.wid.avg$avgsd <- petal.wid.avg$petal.wid.avg + petal.wid.avg$petal.wid.sd
petal.wid.avg
4

1 に答える 1

4

これを行うには多くの方法がありますが、aveおそらく関数が最も簡単です。

iris$big <- with(iris, 
  ave(Petal.Width, Species, FUN = function(x) x > mean(x) + sd(x))
)

plyr解決策は次のとおりです。

iris <- ddply(
  datasets::iris, 
  .(Species), 
  transform, 
  big = Petal.Width > mean(Petal.Width) + sd(Petal.Width) 
)

コメントに基づいて、これが残りのソリューションです。

iris <- subset(iris, big)
iris <- ddply(
  iris,
  .(Species),
  transform,
  smallest = Petal.Width == min(Petal.Width)
)
(iris <- subset(iris, smallest))

同点の場合 (このデータセットのように)、一意の「ちょうど大きい」行は得られないことに注意してください。

于 2012-05-03T16:07:50.950 に答える