2016-07-21 9 views
-2

Bitte, helfen! Ich habe w:R: Spalte Verweis auf sich selbst

x y 
0 0 
0 0 
0 0 
0 1 
0 0 
0 0 
0 -1 
0 0 
0 0 
0 1 
0 0 
0 -1 
0 0 
0 0 

möchte ich bekommen:

x y 
0 0 
0 0 
0 0 
1 1 
1 0 
1 0 
0 -1 
0 0 
0 0 
1 1 
1 0 
0 -1 
0 0 
0 0 

Ich verwende R:

for (i in 2:length(w$x)) { w$x[i] = w$x[i-1] + w$y[i]} 

Ist es möglich, ohne die Verwendung einer Schleifenanweisung zu tun?

Vielen Dank!

Antwort

4

Dies setzt voraus, dass Sie mit dem Anfangswert von 0 in der x Spalte beginnen soll:

transform(w, x = cumsum(y)) 
## x y 
## 1 0 0 
## 2 0 0 
## 3 0 0 
## 4 1 1 
## 5 1 0 
## 6 1 0 
## 7 0 -1 
## 8 0 0 
## 9 0 0 
## 10 1 1 
## 11 1 0 
## 12 0 -1 
## 13 0 0 
## 14 0 0 

Andernfalls können Sie den Anfangswert enthalten:

transform(w, x = x[1] + cumsum(y)) 

Das Ergebnis ist hier die gleiche . Beide nehmen an, dass y[1] Null ist, oder dass Sie den tatsächlichen Wert verwenden möchten, wenn es ungleich Null ist (Ihr Code ignoriert y[1]).

+0

oder 'cbind (cumsum (y), y)' – 989

+0

Vielen Dank !!! – Anatolye

Verwandte Themen