我有以下数据集,
Type Model.rmsep Model.r2pred variable value
1 train Linear Linear RMSEP 0.1067979
2 test PLS.Comp7 PLS.Comp7 RMSEP 0.1008264
3 cv PCR.Comp17 PCR.Comp16 RMSEP 0.1227625
4 train Linear Linear R2pred 0.9190042
5 test PLS.Comp7 PLS.Comp7 R2pred 0.9143945
6 cv PCR.Comp17 PCR.Comp16 R2pred 0.8916413
我想从第二列中选择那些对于每个RMSEP
最多Type
的行以及来自第三列的那些对于每个R2pred
具有最大Type
的行。我想绑定结果并得到如下所示的内容:
Type Model variable value
1 train Linear RMSEP 0.1067979
2 test PLS.Comp7 RMSEP 0.1008264
3 cv PCR.Comp17 RMSEP 0.1227625
4 train Linear R2pred 0.9190042
5 test PLS.Comp7 R2pred 0.9143945
6 cv PCR.Comp16 R2pred 0.8916413
如果可能,最好使用plyr
包。
答案 0 :(得分:0)
首先,这是一个游戏数据集:
play.data <- as.data.frame(matrix(nrow=1000, ncol=3))
names(play.data) <- c("Type", "variable", "value")
play.data$Type<- sample(x=c("train", "test", "cv"), size=1000, replace=TRUE, prob=c(.5, .25, .25))
play.data$variable <- sample(x=c("RMSEP", "R2pred"), size=1000, replace=TRUE, prob=c(.5, .5))
play.data$value <- runif(1000)
现在只需使用ddply,然后按您所需的顺序排序。
## Now get the max
max.data <- ddply (play.data,.(Type, variable), summarize, max_value=max(value))
max.data <- max.data[order(max.data$variable), ]