1

我有一个模拟数据集,它探索一组参数空间,每组参数运行多次(迭代),它看起来像这样:

p1    p2    p3  iteration  result
=================================
v3    v2    v1      1       23.8
v2    v1    v3      2       20.36
v3    v2    v1      2       28.8
v2    v1    v3      1       29.36
...

从这个例子可以看出,(v3, v2, v1) 和 (v2, v1, v3) 都运行了两次。我试图只提取每个参数设置的最大结果的行,在这个例子中:只应该保留第 3 行和第 4 行,因为它们代表了该参数集的最佳结果。有没有一种简单的方法可以在 R 中实现这一点?谢谢

4

1 回答 1

3
df <- read.table(textConnection("p1    p2    p3  iteration  result
v3    v2    v1      1       23.8
v2    v1    v3      2       20.36
v3    v2    v1      2       28.8
v2    v1    v3      1       29.36"), header = T)

library(plyr)
ddply(df, .(p1,p2,p3), function(x) return(x[(which(x$result == max(x$result))), ]))

p1 p2 p3 iteration result
1 v2 v1 v3         1  29.36
2 v3 v2 v1         2  28.80
于 2012-09-14T21:25:05.070 回答