删除行中的重复字符串

OAM*_*OAM 2 r duplicates collapse

以下问题:

我有数据框data1与变量包括几个条目:

data1 <- data.frame(v1 = c("test, test, bird", "bird, bird", "car"))
Run Code Online (Sandbox Code Playgroud)

现在我想删除每一行中的重复条目.结果应如下所示:

data1.final <- data.frame(v1 = c("test, bird", "bird", "car"))
Run Code Online (Sandbox Code Playgroud)

我试过这个:

data1$ID <- 1:nrow(data1)
data1$v1 <- as.character(data1$v1)

data1 <- split(data1, data1$ID)
reduce.words <- function(x) {
  d <- unlist(strsplit(x$v1, split=" "))
  d <- paste(d[-which(duplicated(d))], collapse = ' ')
  x$v1 <- d 
  return(x)
}
data1 <- lapply(data1, reduce.words)
data1 <- as.data.frame(do.call(rbind, data1))
Run Code Online (Sandbox Code Playgroud)

但是,这会产生空行,但第一行除外.有人想解决这个问题吗?

csg*_*pie 5

你似乎有一个相当复杂的工作流程.如何创建一个适用于行的简单函数呢?

reduce_row = function(i) {
  split = strsplit(i, split=", ")[[1]]
  paste(unique(split), collapse = ", ") 
}
Run Code Online (Sandbox Code Playgroud)

然后使用 apply

data1$v2 = apply(data1, 1, reduce_row)
Run Code Online (Sandbox Code Playgroud)

要得到

R> data1
                v1         v2
1 test, test, bird test, bird
2       bird, bird       bird
3              car        car
Run Code Online (Sandbox Code Playgroud)