r - 使用 plyr - R 分块后从一列中获取具有最高值的行

标签 r plyr

假设我有一个如下所示的数据框:

   v1 v2 v3 v4 v5 v6
r1 1  2  2  4  5  9
r2 1  2  2  4  5  10
r3 1  2  2  4  5  7
r4 1  2  2  4  5  12
r5 2  2  2  4  5  9
r6 2  2  2  4  5  10

我想获取 v6 中值最高且 v1 中值为 1 的行。 我知道如何获取 v1 = 1 的所有行并选择其中的第一行,感谢 this answer回答上一个问题:

ddply( df , .variables = "v1" , .fun = function(x) x[1,] )

如何更改函数以便获得 v6 中具有最高值的行?

最佳答案

根据之前的结果,我将使用 [ 使用 逻辑 比较器对第一个条件进行子集化,然后对第二个条件进行第二个子集,因为@sgibb在评论中指出,v6max 值可能不在 v1 == 1 的行中。

#  Subset to those rows where v1 == 1
tmp <- df[ df$v1 == 1 , ]

#  Then select those rows where the max value of v6 appears
tmp[ tmp$v6 == max( tmp$v6 ) , ]

如果您想要第一次出现,请使用which.max()

关于r - 使用 plyr - R 分块后从一列中获取具有最高值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18764825/

相关文章:

R:将百分比数据框从因子转换为数字

r - 如何使用 ggplot2 绘制重叠范围

r - 将函数参数传递给 ddply

r - R 的 plyr 包是否不适用于 R 版本 3.0.2?

r - 如何合并2个数据框以填充R中的缺失值?

r - 在 plyr 调用中使用 svyglm

r - 无法让 Highcharter 绘制时间序列

每个人重复一个模型 100 次

r - 使 Shiny 的应用程序运行得更快的最佳实践是什么?

r - 数据集中每组的样本数不同