r - 数据帧计数中的多个部分字符串匹配
问题描述
我一直在寻找其他主题的解决方案,但没有找到。我正在寻找几个部分字符串匹配。字符串在数据框中,但我也在(字符)向量中尝试过。
示例输入:
authors <- c("Edward","Kelly","Simon")
df <-
Text Date
Edward was the king of ... 2011
Kelly has .. 2014
Last year Simon.. 2009
Did you know Edward.. 1999
我想要的输出是:
Author Count
Edward 2
Kelly 1
Simon 1
同样重要的是,列文本中的每一行只匹配一次。因此,如果名称在输入单元格中被提及两次,它仍然应该只匹配一次。
我试过类似的东西:
sum(str_count(df$Text,c("Edward")))
这适用于一个输入名称,但不适用于多个。我希望有人可以帮助我解决这个问题
解决方案
我们可以遍历 'authors',得到str_count
,sum
和enframe
它来得到一个单一的数据集
library(tidyverse)
map_df(authors, ~ str_count(df$Text, .x) %>%
sum %>%
set_names(.x) %>%
enframe(name = "Author", value = "count")) %>%
arrange(desc(count))
# A tibble: 3 x 2
# Author count
# <chr> <int>
#1 Edward 2
#2 Kelly 1
#3 Simon 1
推荐阅读
- git - Git分支到文件夹合并
- php - 为什么在添加一些 php 代码后我的一些 html 内容被删除了?
- python - 去除子字符串中的特定字符
- c# - 测试 NUnit 中没有发生特定异常
- stm32 - 我的解决方案是否适用于使用 BSRR 和 BRR 的 8 位总线寻址?
- javascript - 获取节点中模块的路径(模块文件夹,而不是入口文件)
- swift - 在 SwiftUI 中拥抱子视图
- python - 中心子 QMainWindow 相对于父 QMainWindow
- prolog - 在序言中加入两个列表?
- flutter - 在颤振中导航回上一页时如何避免重建重复的小部件?