R - 消除重复值

时间:2016-10-19 08:02:58

标签: r dataframe merge

我有一个像这样的输入数据框:

enter image description here

我希望输出如下:

enter image description here

例如,我想占用第一个值(mary有生命),将其扫描到具有重复COL1条目的所有其他行,如果存在重复的COL2值,我需要在合并非重复项时单独消除重复项。换句话说,我想做模式搜索。如果另一行中存在相同的模式,我只想消除重复的模式并合并非重复的模式。

我尝试使用grepl和gsub函数,但我无法正确获得所需的结果。

在下面插入更简单的输入数据集版本:

COL1 COL2 10玛丽有生命 10唐玛丽有生命 10布里托玛丽有生命 20推他们 20推它们毛皮 30对此大喊大叫 30这是对此大喊大叫 40年 40小狗 40马

1 个答案:

答案 0 :(得分:1)

更新后:

df <- read.table(
  text = "COL1;    COL2
10;  mary has life
10;  Don mary has life
10;  Britto mary has life
20;  push them
20;  push them fur
30;  yell at this
30;  this is yell at this", 
  sep = ";", header = TRUE, 
  strip.white = TRUE, stringsAsFactors = FALSE)
library(dplyr)
res <- df %>%
  group_by(COL1) %>%
  do(COL2 = {
    first_value <- .$COL2[[1]]
    paste(unlist(Reduce(function(a, b) {
      new_values <- strsplit(b, first_value)[[1]]
      c(a, new_values)
    }, .$COL2)), collapse = ", ")
  })
res$COL2 <- unlist(res$COL2)