我正在寻找一种有效且快速的方法来执行以下操作: 我有一个数据框,比如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...
我的数据框架非常大,所以我想避免使用循环。
答案 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))