我有一个dataframe,我想计算特定文本字符串的示例数。
例如,在下面的数据框架中:
library(dplyr)
df <- iris %>%
distinct(Species) %>%
mutate(Species2 = Species,
Species3 = Species)
df
# Species Species2 Species3
# 1 setosa setosa setosa
# 2 versicolor versicolor versicolor
# 3 virginica virginica virginica
字符串
我想数一下“setosa”出现的次数
使用length(grep("setosa", df$Species))
,我可以获得特定列中setosa的计数,但我如何才能对整个数据框架执行此操作?
我试过length(grep("setosa", df))
,结果是零。
有什么建议吗
5条答案
按热度按时间tsm1rwdh1#
如果您只是想要精确匹配的计数,那么您所需要的只是
字符串
在更一般的情况下,
grep()
或stringr::str_count()
是必要的,例如如果有可能包含目标字符串的句子,你可以使用Reduce()
迭代地对每一列的计数求和。型
在更大的数据集上进行基准测试
它表明最简单的方法表现最好。在一般情况下,我的方法所花费的时间几乎与其他方法相同,但所分配的内存要少得多。
型
5fjcxozz2#
假设你只想要总计数,而不是按列计数,那么如果你先将dataframe转换为矩阵,你的代码就可以工作了:
字符串
返回3。
注意:与
unlist()
不同,当列具有不同类时,这也适用:型
bejyjqdl3#
字符串
您可以使用
table()
来获取数据集中每个单词的计数。型
或者向下过滤(
purrr::keep()
)以仅包括“setosa”的出现,然后使用length()
获得计数。型
wbgh16ku4#
可选地,
sapply
如下所示字符串
cnwbcb6i5#
例如-要计算B:M的示例,可以使用stringr库中的str_count和sum():
字符串