Filling habe ich einen Vektor:einen leeren Vektor mit Werten in Bezug auf den ersten Wert in dem Vektor
sample.vector
1
1
0
0
14
1
1
0
1
12
I einen zweiten Vektor mit dem folgenden Code erstellt:
second.vector <- c(1, rep(NA, length(sample.vector)))
der diese hergestellt:
second.vector
1
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
ich möchte second.vector
so füllen, dass die NA
s mit 0 + t ersetzt werden er Wert in der Reihe darüber (d. h. die 1 in der ersten Zeile des zweiten Vektors) wenn sample.vector < 3
oder 1 + der Wert in der Zeile darüber (d. h. was auch immer dieser Wert sein mag) wenn sample.vector > 3
.
Mit anderen Worten:
R, möchte ich Sie in Zeile suchen [n] in
sample.vector
. Wenn der Wert kleiner als drei ist, möchte ich, dass Sie die NA insecond.vector
durch den Wert über dieser NA ersetzen. Wenn der Wert in Zeile [n] größer als 3 ist, möchte ich, dass Sie die NA insecond.vector
mit dem Wert über dieser NA füllen, aber 1 dazu hinzufügen.Tun Sie dies für jede Zeile innerhalb
sample.vector
, so dass jede insecond.vector
durch Werte ersetzt wird.
So ist der Vektor, der ich bin der Hoffnung, zu bekommen:
second.vector
1
1
1
1
1
2
2
2
2
2
3
ich das versucht habe:
second.vector[2:length(second.vector)] <-
ifelse(sample.vector[1:length(sample.vector)] > 3,
second.vector[1:length(second.vector)]+1,
second.vector[1:length(second.vector)]+0)
Aber es gibt nur die zweite Reihe von second.vector
a 1, anstatt den gesamten Vektor aufzufüllen.
Irgendwelche Gedanken dazu, wie man das macht?
'cumsum (as.numeric (sample.vector> 3)) + 1' – cuttlefish44
was ist, wenn der Wert = 3? – bouncyball
@bouncyball Dies ist nur ein Beispiel; Die Daten, die ich habe, sind so, dass die Werte entweder 1,0 oder sehr viel größer als 2 oder 3 –