【问题标题】:Calculating the academic "g-index" (a variant of the h-index) in R?计算 R 中的学术“g-index”(h-index 的变体)?
【发布时间】:2021-11-16 13:23:10
【问题描述】:

此数据框显示了两位研究人员及其每次出版物的引用次数:

   researcher citations
   <chr>          <dbl>
 1 Berger             8
 2 Berger            11
 3 Berger            26
 4 Berger            25
 5 Berger            10
 6 Meyer             45
 7 Meyer             12
 8 Meyer             12
 9 Meyer              8
10 Meyer             21

如何计算 R 中每个研究人员的“g-index”?

这是Wikipedia definition of the g-index

该指数是根据给定研究人员的出版物收到的引用分布计算得出的,因此给定一组文章按他们收到的引用次数的降序排列,g-index 是唯一的最大数字,例如前 g 篇文章总共收到至少 g2 次引用。因此,g-index 为 10 表示作者的前 10 篇出版物至少被引用了 100 次(102),g-index 为 20 表示作者的前 20 篇出版物被引用了 400 次(202 )。

数据框:

structure(list(researcher = c("Berger", "Berger", "Berger", "Berger", 
"Berger", "Meyer", "Meyer", "Meyer", "Meyer", "Meyer"), citations = c(8, 
11, 26, 25, 10, 45, 12, 12, 8, 21)), row.names = c(NA, -10L), groups = structure(list(
    researcher = c("Berger", "Meyer"), .rows = structure(list(
        1:5, 6:10), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

【问题讨论】:

    标签: r citations


    【解决方案1】:

    data.table:

    setorder(dt, researcher, -citations)
    dtg <- dt[, .(gscore = max((1:.N)*(cumsum(citations) > (1:.N)))), by = "researcher"]
    dtg
    #>    researcher gscore
    #> 1:     Berger      5
    #> 2:      Meyer      5
    

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多