检测字符串中的重复项

时间:2014-10-02 14:41:57

标签: r duplicates stringr

看起来我在处理R ...中的字符串时遇到了另一个问题。

我所追求的很简单,但我还没有找到办法,尽管在这里和其他地方进行了数小时的搜索。

基本上,我在数据表中有一个列('唯一ID'),其中包含我想根据它是否包含同一个单词的多个实例进行分类的单词串。 / p>

我的数据快照是:

Unique ID
#[1,] Display-imp
#[2,] Display-clk
#[3,] Display-clk Display-imp Display-clk
#[4,] Display-imp Search Affiliate Display-imp
#[5,] Display-imp Display-imp
#[6,] Display-clk Display-clk Display-clk

使用上面的示例数据,我会为那些只包含同一个单词的多个实例的字符串创建一个带有标志的新列。

因此,第1,2,5,6行将在此方法下标记。

我考虑过使用stringr包中的str_count函数,但是这需要我指定我想要检测的模式,而我只对在字符串中多次出现任何单词感兴趣。无论如何,我事先并不知道这些词会是什么,所以不能指出某种列表来引用。

再一次非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

假设你有类似的东西:

df <- data.frame(
  Unique_ID = c("Display-imp", "Display-clk",
                "Display-clk Display-imp Display-clk",
                "Display-imp Search Affiliate Display-imp",
                "Display-imp Display-imp",
                "Display-clk Display-clk Display-clk"))

只需使用strsplituniquelength即可。

counts <- vapply(strsplit(as.character(df$Unique_ID), " "), 
       function(x) length(unique(x)), 1L)
counts
# [1] 1 1 2 3 1 1

使用which告诉您哪些行只有1个唯一值:

which(counts == 1)
# [1] 1 2 5 6