2014-03-18 5 views
5

Das mag eine sehr einfache Frage sein, aber ich konnte sie nicht finden. Sagen wir, ich einen Datenrahmen d mit Zeilennummern in Unordnung wie dieses:R - wie man Daten von Reihe zu Reihe neu sortiert Indexnummer

Signal 
4 9998 
3 549 
1 18 
5 2.342 
2 0.043 

Wie kann ich diese Art von Zeilenindexzahlen zu erhöhen folgendes zu erhalten?

Signal 
1 18 
2 0.043 
3 549 
4 9998 
5 2.342 

Antwort

6
d <- read.table(text=readClipboard(), header=TRUE)  
d$index <- as.numeric(row.names(d)) 
d[order(d$index), ] 
+0

Aus irgendeinem Grund die Reihenfolge der Zeilen endet wirklich komisch: '1 10 100 1000 10000 10001 10002 10003 ... 10009 1001 10010 10011 ...' – biohazard

+0

Besser, 'bestellen' zu verwenden. Es könnte leicht ein Rowname sein, der nicht im Spiel ist. Roownames sind Zeichen, also sollten sie zuerst 'as.numeric' verwenden. – Roland

+0

Vielen Dank! Es funktioniert jetzt mit 'as.numeric (row.names (d))' und order(). Wenn @Paulo Cardoso seine Lösung bearbeitet oder wenn @Roland eine Antwort postet, wähle ich eine als Antwort aus. – biohazard

2

können Sie auch verwenden:

d[order(as.numeric(rownames(d))),,drop=FALSE] 

Tropfen ist nur sinnvoll, wenn Ihr data.frame eine Spalte hat es sonst entfernen

+0

Darf ich die Verwendung von 'as.numeric()' vorschlagen, wie von @Roland in der anderen Antwort vorgeschlagen? – biohazard

Verwandte Themen