Verschieben eines Datenrahmens in R

8

Ich habe einen Datenrahmen wie diesen

%Vor%

was ich tun möchte, ist eine Funktion zu erstellen, die diesen Datenrahmen um einen Wert verschiebt. zum Beispiel:

Wenn der Wert von shifting 1 ist, wird der Datenrahmen:

%Vor%

usw. ...

sollte die Funktion so sein.

%Vor%

Gibt es einen einfachen Weg, dies in R zu tun, ohne in viele Schleifen einzutreten?

    
smack 12.06.2011, 14:14
quelle

4 Antworten

14

Sie können dies auf verschiedene Arten tun, aber eine Möglichkeit besteht darin, head und tail zu verwenden:

%Vor%     
Prasad Chalasani 12.06.2011, 14:40
quelle
10

Ich bevorzuge einfachen alten Modulo; -)

%Vor%

Es ist ziemlich einfach, die einzige Eigenart ist die Eins-Indexierung von R. Es funktioniert auch für Offsets wie 0 , -7 oder 7*nrow(df) ...

    
mbq 12.06.2011 16:09
quelle
8

Hier ist meine Implementierung:

%Vor%

Aktualisiert:

%Vor%     
kohske 12.06.2011 14:38
quelle
1

In taRifx gibt es eine Funktion shift , die mit Vektoren arbeitet. Wenn Sie es anwenden, werden alle Spalten in Zeichen umgewandelt, sofern Zeichen vorhanden sind. Daher verwenden wir einen Trick von plyr. Ich werde wahrscheinlich bald eine data.frame-Methode dafür schreiben:

%Vor%

Der Vorteil von shift ist, dass es eine Reihe von Optionen benötigt:

  • n kann positiv oder negativ sein, um von links / rechts zu springen
  • wrap kann ein- oder ausgeschaltet werden
  • Wenn wrap ausgeschaltet ist, kann Pad aktiviert werden, um mit NAs zu padieren, damit der Vektor die gleiche Länge behält
Ari B. Friedman 01.08.2011 07:12
quelle

Tags und Links