為簡化起見,我有一個包含兩列的表格,第一列是“文章編號”,另一列是“出版公司”。這是從表格中截取的一個長示例:
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 編號中一起出現的頻率的計數。例如,elsevier 和 wiley and sons 是出現頻率最高的對(3 次)。
我想確定的另一件事是,再次回傳這對出版公司的名稱(這再次發生在不同的列中還是在單個列中都沒有關系),但現在我想回傳它們出現的頻率的計數一起以獨特的文章 doi 編號,這些編號由各自的出版公司單獨出版。例如,harvard business review 和 proquest 是最受歡迎的一對,只發表一篇文章(2 次)。
我用 group by、count 等嘗試了一些查詢(使用 SQLite),但還差得遠。也嘗試過,資料透視表但資料太大(超出了excel中的最大列限制)。我也愿意接受使用 R 的答案,但最喜歡 SQL 查詢。
uj5u.com熱心網友回復:
這是您的方法:
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<>在這里擺弄
你可以limit 1在最后只顯示第一行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349926.html
