我有一个
下的矢量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
答案 0 :(得分: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
答案 1 :(得分: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