2012-05-03 16 views
1

大文字と小文字の区別があるグループで大文字小文字を区別したいと思います。たとえば、種をgroup、petal.widを虹彩データの変数として使用します。data.frameのグループで大文字を識別

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

私はこれを作ったが、事実を特定するために元のデータとの関係を作ることはできない。

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 
+0

あなたの例は再現できませんでした。私はそれを変えた。今はそうです。 – Andrie

+0

私はあなたが正確に何をしたいかについてまだ明確ではありません。あなたは、あなたが望んでいるものの出力例をいくつか提供できますか? – Dason

答えて

4

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

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

ここplyrソリューションです:、ここで溶液の残りをコメントにBaed

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)) 

(このデータセットのように)ネクタイがあると、ユニークな「もっと大きな」行が得られないことに注意してください。

+0

私の解釈は、あなたが問題のコードを再現したことです。今問題は、各種の単一要素を特定することです。これは、カットオフ点より大きい(すなわち平均+ sdよりも大きい) – Andrie

+0

両方ともお手伝いしてくれてありがとうございます。しかし、それは私が把握しようとしていることです。ちょっと大きな値。 –

関連する問題