我有一个数据框,其中包含多次运行实验的结果,每个实验都用作日志,并带有自己的升序计数器。我想向数据框中添加另一列,该列对于下面示例中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
列是一个因素,所以我认为我可以利用它来避免对所有行迭代地做这个幼稚的子集。
有没有更好的方法来获取 a 子集的最大值列data.frame
?