根据另一列中的公共值计算同一列中对的计数



为了简化,我有一个有两列的表,第一列是"文章doi编号";另一个是";出版公司";。下面是从表中截取的一个长示例:

article_doi_number      publishing_company
1            10.24397                elsevier
2            10.24397         emerald insight
3            10.24397                   jstor
4            10.24397             tandfonline
5            10.24397          wiley and sons
6            10.24397           sage journals
7            10.18150                elsevier
8            10.18150          wiley and sons
9            10.18150         emerald insight
10           10.60920           gale academic
11           10.60920                proquest
12           10.60920           springer link
13           10.60920                   jstor
14           10.80442         ingenta connect
15           10.80442                  pubmed
16           10.21337 harvard business review
17           10.21337                proquest
18           10.80416                    plos
19           10.80431           research gate
20           10.80431                proquest
21           10.70125                    ieee
22           10.81093               frontiers
23           10.33542                  scielo
24           10.33542                  pubmed
25           10.81100 harvard business review
26           10.81100                proquest
27           10.33586                elsevier
28           10.33586          wiley and sons
29           10.33586           sage journals
30           10.33586           gale academic
31           10.33586                proquest
32           10.33586           research gate

我想返回这对出版公司的名称(在同一列或不同的列中,这无关紧要(,以及它们在不同/唯一的文章doi编号中一起出现的频率。例如,埃尔塞维尔和威利父子是出现频率最高的一对(3次(。

我想建立的另一件事是,再次返回这对出版公司的名称(同样,无论这种情况发生在不同的专栏还是单个专栏中都无关紧要(,但现在我想返回它们在各自出版公司单独发布的独特文章doi编号中出现的频率。例如,《哈佛商业评论》和《proquest》是最受欢迎的一对只发表一篇文章的杂志(2次(。

我尝试了一些带有groupby、count等的查询(使用SQLite(,但远远没有。也尝试过透视表,但数据太大(超过excel中的最大列限制(。我也对使用R的答案持开放态度,但最喜欢SQL查询。

以下是如何做到这一点:

select a.publishing_company , b.publishing_company , count(*) cnt
from tablename a 
join tablename b
on a.article_doi_number = b.article_doi_number
and a.id < b.id 
group by a.publishing_company , b.publishing_company
order by cnt desc

db<gt;小提琴这里

您可以在末尾limit 1以仅显示第一行。

相关内容

  • 没有找到相关文章

最新更新