実験の複数の実行からの結果で構成されるデータフレームがあります。各実行はログとして機能し、独自の昇順カウンターがあります。以下のサンプルiteration
のの個別の値ごとにの最大値を持つ別の列をデータフレームに追加したいと思います。experiment.num
df <- data.frame(
iteration = rep(1:5,5),
experiment.num = c(rep(1,5),rep(2,5),rep(3,5),rep(4,5),rep(5,5)),
some.val=42,
another.val=12
)
この例では、追加の列は次のようになります(すべてのサブセットの最大値が同じであるためiteration
)。
df$max <- rep(5,25)
私が現在使用している素朴な解決策は次のとおりです。
df$max <- sapply(df$experiment.num,function(exp.num) max(df$iteration[df$experiment.num == exp.num]))
また、元のフレームとマージできる別のフレームを作成するために使用sapply(unique(df$experiment.num), function(n) c(n,max(df$iteration[df$experiment.num==n])))
しましたが、これらのアプローチはどちらも必要以上に複雑に見えます。
列が要因であるため、experiment.num
すべての行に対してこの単純なサブセット化を繰り返し実行することを回避するために、それを利用できる可能性があると思います。
のサブセットの最大値の列を取得するためのより良い方法はありdata.frame
ますか?