迭代项目列表,计算数据框中的匹配项

时间:2016-12-07 01:47:29

标签: r

R中的沮丧新手问题:

假设我有一个字符串列表=(“a”,“b”,“c”),以及一个列为df $ stuff的数据框。

我想遍历列表中的每个字符串,计算字符串在df $ stuff中出现的次数,并累加它。换句话说,“a”出现的次数加上出现“b”的次数加上出现“c”的次数。我尝试过count,table和aggregate函数,我得到的只是错误。

必须有一个很好的干净方法。

2 个答案:

答案 0 :(得分:0)

如果没有您的数据样本以及您想要输出的内容,很难回答这个问题,但我会尝试。首先,我将猜测您的数据是什么样的:

df <- data.frame(stuff = sample(letters[1:5], 30, replace = TRUE))
strings <- letters[1:3]

要获得stringsdf[["stuff"]]的计数,您可以使用table,然后使用strings索引到表中。

table(df[["stuff"]])[strings]

答案 1 :(得分:0)

我对被问到的内容有不同的看法。所以我也会试一试。

strings = c("a", "b", "c")
stuff = c("the cat", "the bat", "the dog")
sapply(strings, function(s) length(grep(s, stuff)))
a b c 
2 1 1

获取每个字符串的匹配数。所以

sum(sapply(strings, function(s) length(grep(s, stuff))))

为您提供所有这些的总和。

这就是你想要的吗?