-2

次の形式のデータがあります。

"almond" "blueberry" 3
"almond" "leek" 6
"almond" "citron" 7
"almond" "fish" 2
...
"leek" "swiss_cheese" 3
"leek" "pumpkin" 5
"leek" "onion" 4
"leek" "chocolate" 10
...

最初の列の各値について、3 番目の列に従ってk 個のベスト パートナーを見つけたいと考えています。「最良」とは、3 行目の数字が小さいことを意味します。したがって、アーモンドの 3 つの最良のパートナーは、魚、ブルーベリー、ニラです。ネギの場合、その 3 つの最良のパートナーはswiss_cheese、タマネギ、カボチャです。最後に、最初の列の要因ごとに表全体を 3 つの最適なパートナーに絞り込みたいと思います。つまり、

"almond" "blueberry" 3
"almond" "leek" 6
"almond" "fish" 2
...
"leek" "swiss_cheese" 3
"leek" "pumpkin" 5
"leek" "onion" 4
...
4

1 に答える 1

0

だから、私がそれをするために見つけた1つの方法は

require(plyr)
t <- ddply(table, .(V1), transform, rank = rank(V3))
z <- t[rank <= k,]

最初の行は、まだパッケージをロードしていない場合、パッケージをロードします。2 番目は、ランクと呼ばれるテーブルに最後の列を追加し、3 番目の列 ("V3") に従って各行のランクを含み、最初の列 ("V1") によって集計されます。つまり、最初の列の個別の値ごとに、それを含むすべての行のローカル ランキングがあります。2 番目のステップでは、ランクが指定されたkより小さい行のみをサブセット化できます。

于 2012-11-03T18:12:30.860 に答える