多数の行(<90,000)と2列のみのマトリックス(この例ではポイントという名前)があります。
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))
私の理解では、私は多くのインデックス作成を行っているため、遅いのです。助けてくれてありがとう!