max
特定の列の関数を使用してデータ フレームを縮小しようとしています。他の列を保持したいが、各最大値が選択された同じ行の値を保持したい。例を示すと、この説明が簡単になります。
次のデータ フレームがあるとします。
dframe <- data.frame(list(BENCH=sort(rep(letters[1:4], 4)),
CFG=rep(1:4, 4),
VALUE=runif(4 * 4)
))
これは私に与えます:
ベンチ CFG 値 1 1 0.98828096 2 a 2 0.19630597 3 a 3 0.83539540 4 a 4 0.90988296 5 b 1 0.01191147 6 b 2 0.35164194 7 b 3 0.55094787 8 b 4 0.20744004 9 c 1 0.49864470 10c 2 0.77845408 11c 3 0.25278871 12c4 0.23440847 13 日 1 0.29795494 14 日 2 0.91766057 15 日 3 0.68044728 16 日 4 0.18448748
ここで、異なる BENCH ごとに最大値を選択するために、データを減らしたいと思います。
aggregate(VALUE ~ BENCH, dframe, FUN=max)
これにより、期待される結果が得られます。
ベンチ値 1 0.9882810 2b 0.5509479 3c 0.7784541 4 日 0.9176606
次に、他の列を保持しようとしました。
aggregate(cbind(VALUE, CFG) ~ BENCH, dframe, FUN=max)
このリダクションは次を返します。
ベンチバリューCFG 1 0.9882810 4 2 b 0.5509479 4 3c 0.7784541 4 4 日 0.9176606 4
VALUE と CFG の両方がmax
関数を使用して削減されます。しかし、これは私が望むものではありません。たとえば、この例では、次の情報を取得したいと考えています。
ベンチバリューCFG 1 0.9882810 1 2 b 0.5509479 3 3c 0.7784541 2 4 日 0.9176606 2
ここで、CFG は削減されませんが、それぞれの異なる BENCH の最大値に関連付けられた値を維持するだけです。
表示された最後の結果を得るために、削減を変更するにはどうすればよいですか?