R:从逗号分隔的字符串中删除连续的重复项

mik*_*mik 1 csv r duplicates

我在从以下数据中删除适量信息时遇到问题:

18,14,17,2,9,8
17,17,17,14
18,14,17,2,1,1,1,1,9,8,1,1,1

我正在应用 !duplicate 来删除重复项。

SplitFunction <- function(x) {
  b <- unlist(strsplit(x, '[,]'))
  c <- b[!duplicated(b)]
  return(paste(c, collapse=","))
}
Run Code Online (Sandbox Code Playgroud)

我在仅删除连续的重复项时遇到问题。下面的结果是我得到的。

18,14,17,2,9,8
17,14
18,14,17,2,1,9,8

下面的数据是我想要获得的。

18,14,17,2,9,8
17,14
18,14,17,2,1,9,8,1

你能建议一种方法来执行此操作吗?理想情况下是矢量化方法...
谢谢,
米格尔

chu*_*jin 5

您可以使用 rle 函数来解决这个问题。

xx <- c("18,14,17,2,9,8","17,17,17,14","18,14,17,2,1,1,1,1,9,8,1,1,1")
zz <- strsplit(xx,",")
sapply(zz,function(x) rle(x)$value)
Run Code Online (Sandbox Code Playgroud)

并且你可以参考这个链接。 如何在 R 中按顺序删除/折叠连续的重复值?