假设我有一个如下所示的数据框:
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在评论中指出,v6
的 max
值可能不在 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/