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.
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
.
Unter Verwendung von Base% month.abb
Verwenden von data.table
einfach
Vorgehensweise in data.table
:
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:
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)]