gpt4 book ai didi

r - 数据框 : create column by applying a function to groups of rows

转载 作者:行者123 更新时间:2023-12-04 11:00:24 25 4
gpt4 key购买 nike

我有一个数据框,由多次运行实验的结果组成,每个结果都用作日志,并带有自己的升序计数器。我想向数据框中添加另一列,该列对于以下示例中 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 子集的最大值列?

最佳答案

使用plyr:

ddply(df, .(experiment.num), transform, max = max(iteration))

关于r - 数据框 : create column by applying a function to groups of rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com