【发布时间】:2014-02-26 17:35:55
【问题描述】:
实际上,我有一个非常大的数据框。一列包含一个 ID,另一列包含与该 ID 关联的值。但是,每个 ID 以不同的值出现多次,我希望记录每个 ID 的最大值,同时丢弃其余的。这是使用R 中的quakes 数据集的可复制示例:
data <- as.data.frame(quakes)
##Create output matrix
output <- matrix(,length(unique(data[,5])),2)
colnames(output) <- c("Station ID", "Max Mag")
##Grab unique station IDs
uni <- unique(data[,5])
##Go through each station ID and record the maximum magnitude
for (i in 1:dim(output)[1])
{
sub.data <- data[which(data[,5]==uni[i]),]
##Put station ID in column 1
output[i,1] <- uni[i]
##Put biggest magnitude in column 2
output[i,2] <- max(sub.data[,4])
}
考虑到我的真实数据有 100000 行尺寸的数据框,这是一个缓慢的过程。有没有更快的方法来执行这样的任务?
非常感谢任何帮助!
【问题讨论】: