循环以删除所有连续重复的条目

时间:2017-08-17 21:38:07

标签: r loops

Data

参见上图。我想删除所有连续重复的条目,仅引用第3列。

首先它应该检查第1和第2行,如果第3列相同则删除第2行并检查第1和第3行,依此类推。如果连续两行的第3列不同,则不执行任何操作并增加行以检查下两行。

这是我能得到的最接近的。

for ( i in 1:2493658) { if (newcol2[i,3]== newcol2[i+1,3]) newcol3 <- newcol2[-c(i+1),] }

2 个答案:

答案 0 :(得分:0)

可重复的例子

df <- data.frame(Customer=1:6,
                 Invoice=letters[1:6],
                 Sales.Rep.ID=rep(c(10,20),each=3),
                 stringsAsFactors=F)

dplyr解决方案

library(dplyr)
desired <- df %>%
             mutate(dup = duplicated(Sales.Rep.ID)) %>%
             filter(dup==F) %>%
             select(-dup)

输出

  Customer Invoice Sales.Rep.ID
1        1       a           10
2        4       d           20

答案 1 :(得分:0)

newcol3 <- newcol2[cumsum(rle(as.numeric(newcol2[,3]))$lengths),]
newcol4 <- newcol2[cumsum(rle(as.numeric(newcol2[,3]))$lengths)- rle(as.numeric(newcol2[,3]))$lengths +1,]

第一个删除顶部重复值并保持最后一个,而第二个保持最高值并删除其余值。 这就是我想要的。 无论如何,谢谢你