4

私は以下のようなベクトルを持っています

a<- c(1,1,1,2,3,2,2,2,2,1,0,0,0,0,2,3,4,4,1,1)

ここでは、多くの重複要素があることがわかります。それらは繰り返されるものです。最初の要素を除いて、連続して重複するすべての要素を 0 に置き換えることができるコードが必要です。私が必要とする結果は

a<- c(1,0,0,2,3,2,0,0,0,1,0,0,0,0,2,3,4,0,1,0)

私はもう試した

unique(a)
       #which gives
[1] 1 2 3 0 4
4

2 に答える 2

5

時間差シリーズを作成して比較できます

> a
 [1] 1 1 1 2 3 2 2 2 2 1 0 0 0 0 2 3 4 4 1 1
> ifelse(a == c(a[1]-1,a[(1:length(a)-1)]) , 0 , a)
 [1] 1 0 0 2 3 2 0 0 0 1 0 0 0 0 2 3 4 0 1 0
于 2013-08-08T08:31:15.970 に答える
5
replace(a, duplicated(c(0, cumsum(abs(diff(a))))), 0)
# [1] 1 0 0 2 3 2 0 0 0 1 0 0 0 0 2 3 4 0 1 0
于 2013-08-08T08:37:36.077 に答える