识别并替换向量中的重复元素

时间:2013-08-08 08:18:08

标签: r

我有一个

下的矢量
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

2 个答案:

答案 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