2016-02-02 38 views
-3

我正在寻找一种高效且快速的方法来执行以下操作: 我有一个数据框,其中包含2个变量A和B,其中对于A值可以多次出现:R数据帧:变量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 

现在我想给我一个向量翻

unique(mat$VarA) 

的每个唯一值的最大VarB的条件上翻。 在这里的例子,这将是

1 0.95848233 
2 1.13650996 
3 2.08189370 
etc... 

我的数据帧是非常大的,所以我要避免使用循环。

回答

1

试试这个:

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

尝试使用data.table包。

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

试试这个:

library(plyr) 
ddply(mat, .(VarA), summarise, VarB=min(VarB)) 
相关问题