Hinzufügen einer gerasterten Spalte zum Datenrahmen

8

Ich habe einige monatliche Daten und möchte meinem Datenrahmen eine Spalte hinzufügen, die den kleinsten Wert in der ersten Spalte dem größten Wert in der ersten Spalte zuordnet. Der zweitkleinste Wert in der ersten Spalte bis zum zweitgrößten Wert in der ersten Spalte, ect ...

Hier einige Beispieldaten

%Vor%

Ich versuche, meine Daten so aussehen zu lassen

%Vor%

Ich gehe im Kreis mit Rang, Art und Ordnung. Jede Hilfe wäre willkommen.

    
mikeL 03.08.2015, 17:48
quelle

4 Antworten

6

Es ist ziemlich einfach, wenn Sie ein temporäres Objekt erstellen, das die aufsteigenden und die absteigenden Werte gepaart hat:

%Vor%

Die Funktion match wurde entwickelt, um ganzzahlige Indizierungswerte zu konstruieren, die als Argumente für "[" verwendet werden. Es ist die grundlegende Funktion in merge .

    
42- 03.08.2015, 18:10
quelle
4

Ähnliche Idee wie @BondedDust:

%Vor%

Was gibt:

%Vor%     
Steven Beaupré 03.08.2015 18:29
quelle
4

Unter Verwendung von Base% month.abb

%Vor%

Verwenden von data.table einfach

%Vor%     
Veerendra Gadekar 03.08.2015 18:05
quelle
3

Vorgehensweise in data.table :

%Vor%

Wenn Sie mit den Zeilen in der richtigen Reihenfolge enden möchten, ist der einfachste Weg, month.abb als Ebenen von rn als Faktor zu verwenden:

%Vor%

Sie können stattdessen auch order(match(rn,month.abb)) verwenden, wenn Ihnen das passt; Wenn Sie eine Menge nach Monat neu sortieren, kann es sinnvoll sein, rn als Faktor zu definieren, damit Sie die match oder factor Hunde- und Pony-Show nicht wiederholt durchführen müssen: dat[,rn:=factor(rn,levels=month.abb)][order(rn)]

    
MichaelChirico 03.08.2015 18:32
quelle

Tags und Links