我有一个矩阵(在此示例中命名为点),其中包含大量行(<90,000)且只有两列。
A B
1 10.1
2 9.2
3 4.5
1 8.9
1 0.7
我想创建另一个矩阵,其中只有“A”列中的唯一值和“B”列中与那些重复值相对应的值的平均值。结果:-
A B
1 6.56
2 9.20
3 4.50
目前,我正在使用这个(下面的代码),这需要很多时间。因此,如果有人能建议我如何加快这些计算,我将非常感激。
uniquedata<-points[which(!duplicated(points[,"A"])),]
reps<-points[which(duplicated(points[,"A"])),]
result<-list()
intensity<-list()
for(i in c(1:length(uniquedata[,"A"]))){
result[[i]]<-which(uniquedata[i,"A"]==reps[,"A"])
}
for(j in c(1:length(result))){
if(length(result[[j]])!=0){
intensity[j]<-mean(c(reps[result[[j]],"B"],uniquedata[j,"B"]))
}else{
intensity[j]<-uniquedata[j,"B"]
}
}
points1<-cbind(uniquedata[,1],unlist(intensity))
我的理解是我正在做很多索引,这就是为什么它很慢。在此先感谢您的帮助!