删除一行中的重复字符串

标签 r duplicates

以下问题:

我有一个包含多个条目的变量的数据框 data1:

data1 <- data.frame(v1 = c("test, test, bird", "bird, bird", "car"))

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

data1.final <- data.frame(v1 = c("test, bird", "bird", "car"))

我试过这个:

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))

但是,这会产生空行,除了第一行。任何人有解决这个问题的想法?

最佳答案

您的工作流程似乎相当复杂。只创建一个适用于行的简单函数怎么样

reduce_row = function(i) {
  split = strsplit(i, split=", ")[[1]]
  paste(unique(split), collapse = ", ") 
}

然后使用apply

data1$v2 = apply(data1, 1, reduce_row)

得到

R> data1
                v1         v2
1 test, test, bird test, bird
2       bird, bird       bird
3              car        car

关于删除一行中的重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173948/

相关文章:

r - 如何处理ggplot2的 "data of class uneval"错误?

algorithm - 检测重复文件

python - 从时间戳在指定范围或持续时间内的 Pandas DataFrame 中删除重复行

java - 按顺序从单链列表中删除重复项

r - 如何使用 R 从维基数据中检索电影的流派

r - 如何在行中搜索相等的变量(以智能方式)并将相应的行存储为子集?

r - ggplot2:添加 geom_smooth() 会破坏点图例

具有两个 INNER JOIN 的 MySQL 查询在结果中返回重复条目

mysql - 从sql中删除重复数据

r - 检查 data.frame 列中的任何值是否为空