2

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

   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 的所有行并选择第一行:

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

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

4

2 回答 2

5

从之前的结果来看,我会使用比较器[对您的第一个条件进行子集logical化,然后对您的第二个条件执行第二个子集,因为正如@sgibb 在评论中指出的那样,maxv6可能不在 where 的行中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()

于 2013-09-12T13:12:05.703 回答
0

我们也可以subset像这样使用运算符

x_sub= subset(x, state == "C" & chainlength == 5 & segment == "C2C_REG")

其中 x 是数据框,另一个参数是逻辑表达式

于 2015-02-12T06:18:10.360 回答