小编Mat*_*all的帖子

data.frame:通过将函数应用于行组来创建列

我有一个数据框,包含多次运行实验的结果,每个实验用作一个日志,有自己的升序计数器.我想在数据框中添加另一列,该列具有下面示例中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
)
Run Code Online (Sandbox Code Playgroud)

在此示例中,额外列将如下所示(因为所有子集具有相同的最大值iteration):

df$max <- rep(5,25)
Run Code Online (Sandbox Code Playgroud)

我目前使用的天真解决方案是:

df$max <- sapply(df$experiment.num,function(exp.num) max(df$iteration[df$experiment.num == exp.num]))
Run Code Online (Sandbox Code Playgroud)

我还习惯于sapply(unique(df$experiment.num), function(n) c(n,max(df$iteration[df$experiment.num==n])))构建另一个框架,然后我可以将其与原始框架合并,但这两种方法看起来都比必要的复杂.

experiment.num列是一个因素,所以我想我可以利用它来避免迭代地为所有行执行这种天真的子集.

是否有更好的方法来获取a的子集的最大值列data.frame

r dataframe sapply

4
推荐指数
1
解决办法
413
查看次数

标签 统计

dataframe ×1

r ×1

sapply ×1