删除重复的列值

时间:2016-08-22 10:05:06

标签: r dataframe unique

我看了几篇文章,但在R中找不到解决这个问题的明确解释:

df如下所示:

df>
  one two three
1 EC1 EC1   EC2
2 EC2 EC2   EC3
3 EC1 EC1   EC1

我想要一个新列,其中包含每行中的唯一值,如下所示。 注意四会有不同的长度

  one two three    four
1 EC1 EC1   EC2 EC1 EC2
2 EC2 EC2   EC3 EC2 EC3
3 EC1 EC1   EC1     EC1

从阅读线程看,似乎需要lapply公式。我还想第一个阶段是将所有行值粘贴到新列中的单个值中作为第一步。

1 个答案:

答案 0 :(得分:2)

我们可以applyMARGIN = 1一起使用循环行,将unique元素和paste元素放在一起。

df$four <- apply(df, 1, FUN = function(x) paste(unique(x), collapse=" "))

我们也可以regex使用paste来执行此操作

trimws(gsub("(\\b\\S+\\b)(?=.*\\1)", "", do.call(paste, df), perl = TRUE))
#[1] "EC1 EC2" "EC2 EC3" "EC1"