複数の列のトップリストを取得する方法:私が選択して、単一の列を手配することができます
iris %>%
select(Petal.Width, Species) %>%
arrange(desc(Petal.Width))
しかし、私は全体のデータフレームのためにこれをやってみたいです。私はforloopでこれに近づいています:
features <- colnames(iris)
top <- data.frame()
for (i in 1:length(features)) {
label <- features[[i]]
iris %>%
select(label, Species) %>%
arrange(desc(label)) %>%
top_n(3) %>%
rbind(top)
}
# Error in arrange_impl(.data, dots) :
# incorrect size (1) at position 1, expecting : 150
私にエラーが発生します。
明らかにarrange(desc(label))
は機能しません。私は検索してUQ
とsubstitute
のようなものを試して、label
を引用符で囲みましたが、結果はありません。
rbind(top)
とtop_n
エンドも、私が望んでいない正確に何であるかもしれないが、私は今持っている主な問題はそうforloopはそれを受け入れるウィルlabel
を使用する方法です。
そしておそらく誰かが私のalltogether forloopより良いアプローチを知っている...
所望の出力は、すべての列の上部3と、データフレームです。
偉大な答え。マイナーな追加: 'slice(1:3) 'を使用して各グループの上位3つのエントリを選択すると、その結果をさらに' spread'に渡してdata.frameを元のワイドフォーマットに戻すことができます。 –
嬉しいです。値を再び広げるためには、何らかの識別子を持っていなければなりません。それ以外の場合は重複した識別子があるので拡散が止まります...しかしそうでなければ正しいです。 – David
うん、それは働いた!どうもありがとう! – raoul