R数据帧:在变量A上获得变量B的最大条件

时间:2016-02-02 13:17:53

标签: r dataframe

我正在寻找一种有效且快速的方法来执行以下操作: 我有一个数据框,比如2个变量,A和B,其中A的值可以出现几次:

mat<-data.frame('VarA'=rep(seq(1,10),2),'VarB'=rnorm(20))

VarA        VarB
1         0.95848233
2        -0.07477916
3         2.08189370
4         0.46523827
5         0.53500190
6         0.52605101
7        -0.69587974
8        -0.21772252
9         0.29429577
10        3.30514605
1         0.84938361
2         1.13650996
3         1.25143046

现在我想得到一个向量,为我提供VarA的每个唯一值

unique(mat$VarA)

VarB的最大值以VarA为条件。 在这里的例子中将是

1    0.95848233
2    1.13650996
3    2.08189370
etc...

我的数据框架非常大,所以我想避免使用循环。

3 个答案:

答案 0 :(得分:1)

尝试使用data.table包。

library(data.table)
mat <- data.table(mat)
result <- mat[,max(VarB),VarA]
print(result)

答案 1 :(得分:1)

试试这个:

library(dplyr)
mat %>% group_by(VarA) %>%
summarise(max=max(VarB))

答案 2 :(得分:1)

试试这个:

library(plyr)
ddply(mat, .(VarA), summarise, VarB=min(VarB))