R Erstellen eine Kopie einer Spalte, in der die neuen Spalte mit einem festen Betrag versetzt ist,

StackOverflow https://stackoverflow.com/questions/4219715

  •  26-09-2019
  •  | 
  •  

Frage

Ich suche eine Kopie einer bestehenden Spalte einer Datenrahmen zu schaffen, die durch eine Anzahl von Reihen versetzt ist.

z. wenn column2 ist eine Kopie von column1 um 1 versetzt, dann

> dataframe
$column1
[1] 1 2 3 4 5

$column2
[1] 0 1 2 3 4

Ich habe einige Erfolge mit dem folgenden Code habe:

offset7 <- rep(0, 7)
dataframe$column1.prev7 = c(offset7, dataframe$column1[1:(length(dataframe$column1)-7)])

Allerdings beginnt es Fehler geben, wenn ich mit 30 oder mehr gegenüber. Meine Daten sind lang genug, um dies kein Problem des Offset größer ist als die Anzahl der Zeilen zu sein. Der Fehler ist:

Error in dataframe$column1[1:(length(dataframe$column1) - 30)] : 
  only 0's may be mixed with negative subscripts

Vielen Dank im Voraus! Eine schnelle Schleife kostenlose Version, die schön mit plyr spielt würde bevorzugt werden. Die Absicht hier ist es, die Zeitreihendaten in verschiedene Lags bis zu einem Jahr zu brechen und dann die Ergebnisse auf verschiedene Weise zu analysieren.

War es hilfreich?

Lösung

Bitte verwenden, um eine richtige Zeitreihe Klasse für Zeitreihen Operationen. Beliebte Favoriten sind Zoo und xts die beide viel der Dokumentation.

Als einfaches Beispiel betrachten

> library(xts)
> foo <- xts(100:109, order.by=Sys.Date()+0:9)
> merge(foo,  l1=lag(foo,1), lm1=lag(foo,-1))
           foo  l1 lm1
2010-11-18 100  NA 101
2010-11-19 101 100 102
2010-11-20 102 101 103
2010-11-21 103 102 104
2010-11-22 104 103 105
2010-11-23 105 104 106
2010-11-24 106 105 107
2010-11-25 107 106 108
2010-11-26 108 107 109
2010-11-27 109 108  NA
> 

Aber gerade tut es nicht mit der Hand. Und such hier für '[r] xts' oder [r] Zoo‘im R-Tag suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top