Ich weiß, dass es ähnliche Fragen gibt, aber ich konnte keine Antwort auf meine Frage finden. Ich versuche, Elemente in einer Matrix zu ranken und dann Daten von 5 höchsten Elementen zu extrahieren.Ranking und Zählen von Matrixelementen in R
Hier ist mein Versuch.
set.seed(20)
d<-matrix(rnorm(100),nrow=10,ncol=10)
start<-d[1,1]
for (i in 1:10) {
for (j in 1:10) {
if (start < d[i,j])
{high<-d[i,j]
rowind<-i
colind<-j
}
}
}
Obwohl dies mir die Daten des höchsten Elements gibt, einschließlich der Zeilen- und Spaltennummern, kann ich glaube nicht an eine Möglichkeit, das gleiche für Elemente von 2 bis 5. Platz zu tun Ich habe auch versucht
rank(d, ties.method="max")
Aber es war nicht hilfreich, weil es nur den Rang im Vektorformat ausspuckt. Was ich letztlich will ist ein Datenrahmen (oder jede Art von Tabelle), die Rang, Spaltenname, Zeilenname und die Daten (Anzahl) der höchsten 5 Elemente in der Matrix enthält.
bearbeiten
set.seed(20)
d<-matrix(rnorm(100),nrow=10,ncol=10)
d[1,2]<-5
d[2,1]<-5
d[1,3]<-4
d[3,1]<-4
Danke für die Antworten. Diese funktionierten perfekt für meinen Zweck, aber da ich diesen Code für Korrelationsdiagramm verwende - wo es doppelte Zahlen für jedes Paar gibt - möchte ich nur eine der beiden Zahlen für den Ranking-Zweck zählen. Gibt es eine Möglichkeit, dies zu tun? Vielen Dank.
Ist es nach Zeile oder Spalte? – akrun
Verwenden Sie set.seed, bevor Sie ein zufälliges Beispiel erstellen. Erleichtert die Überprüfung und den Vergleich von Antworten. – Frank
@Frank Danke für den Vorschlag. Habe gerade die Änderung vorgenommen. – sh2657