gpt4 book ai didi

r - 如何计算数据框中的元素出现在另一个数据框中的次数

转载 作者:行者123 更新时间:2023-12-02 08:00:59 25 4
gpt4 key购买 nike

我有 2 个数据框。一个是供应商列表:

      vendor
1 apple
2 samsung
3 whirlpool
etc
.
.
.

另一篇是关于特定供应商的文章:

nbr     title     content
1 title 1 This is an article about apple
2 title 2 This is an article about whirlpool
3 title 3 This is an article about samsung
4 title 4 This is an article about apple and samsung
5 title 5 This is an article about none of them
etc
.
.
.

我已经尝试使用 stringr 包中的许多函数,但我不想只计算一个术语,我想计算整个供应商列表。我试过使用 dplyr 进行分组和计数,但我也无法按照我想要的方式工作。

最后,我想得到 2 个输出:每个供应商在所有文章中被提及的次数。

apple       2
samsung 2
whirlpool 1
etc.
.
.
.

我还想查看每个供应商在一篇文章中被提及的次数:

title     apple     samsung     whirlpool    etc...
title 1 1
title 2 1
title 3 1
title 4 1 1
title 5
etc.
.
.
.

最佳答案

这是一种解决方案:

mentions = stringr::str_extract_all(art$content, pattern = paste(v$vendor, collapse = "|"))
table(unlist(lapply(mentions, unique)))
# apple samsung whirlpool
# 2 2 1

mentions = lapply(mentions, factor, levels = v$vendor)
t(sapply(mentions, table))
# apple samsung whirlpool
# title 1 1 0 0
# title 2 0 0 1
# title 3 0 1 0
# title 4 1 1 0
# title 5 0 0 0

使用此数据:

v = read.table(text = "      vendor
1 apple
2 samsung
3 whirlpool", header = T, stringsAsFactors = F)

art = read.table(text = "nbr title content
1 'title 1' 'This is an article about apple'
2 'title 2' 'This is an article about whirlpool'
3 'title 3' 'This is an article about samsung'
4 'title 4' 'This is an article about apple and samsung'
5 'title 5' 'This is an article about none of them'", header = T, stringsAsFactors = F)

如果您的供应商名称可能与其他单词混合,您可能需要在它们之前和之后添加单词边界 "\\b",然后再将它们用作正则表达式模式。

关于r - 如何计算数据框中的元素出现在另一个数据框中的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com