2

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

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

基本上,我在数据表中有一个列(“唯一 ID”),其中包含我想要根据它是否包含同一个单词的多个实例来分类的一串单词。

我的数据快照是:

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 函数,但这需要我指定要检测的模式,而我只对字符串中是否多次出现任何单词感兴趣。无论如何,我事先不知道这些词会是什么,所以不能指定某种列表来引用。

再次感谢任何帮助!

4

1 回答 1

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

只需使用strsplit,uniquelength.

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
于 2014-10-02T14:52:54.123 回答