根据下一行删除重复项

时间:2019-01-11 04:46:40

标签: r duplicates shift

我是R的新手。我希望删除数据帧中df$x = "string" AND the next row = the same string

上的重复行。

所以说我有此专栏

1. String - remove 2. String 3. A 4. A 5. A 6. String - remove 7. String - remove 8. String 9. A 10. A

我想要的结果是

2. String 3. A 4. A 5. A 8. String 9. A 10. A

2 个答案:

答案 0 :(得分:3)

我们可以从lead中使用dplyr并删除当前行和下一行为“字符串”的行。

library(dplyr)

df %>%
  filter(!(V1 == "String" & lead(V1) == "String"))

#      V1
#1 String
#2      A
#3      A
#4 String
#5      A

使用基数R,我们可以做到

df[!((df$V1 == "String") & c(df$V1[-1], NA) == "String"),,drop = FALSE]

#      V1
#2 String
#3      A
#4      A
#7 String
#8      A

数据

df <- structure(list(V1 = c("String", "String", "A", "A", "String", 
"String", "String", "A")), .Names = "V1", row.names = c(NA, -8L
 ), class = "data.frame")

答案 1 :(得分:0)

我们可以使用duplicatedrleid创建一个逻辑索引来设置行的子集

library(data.table)
setDT(df)[!(duplicated(rleid(V1)) & V1 == 'String')]
#       V1
#1: String
#2:      A
#3:      A
#4: String
#5:      A

数据

df <- structure(list(V1 = c("String", "String", "A", "A", "String", 
"String", "String", "A")), row.names = c(NA, -8L), class = "data.frame")