Show the code
#|
<- jsonlite::read_json(params$keypapers)
kp
<- sapply(
dois
kp,function(x) {
$DOI
x
}|>
) unlist() |>
unique() |>
as.character()
<- dois[!is.null(dois)] dois
Data Management Report
A snowball literature using OpenAlex will be conducted and all steps documented. The literature search is for the finance section of Chapter 6 of the IPBES Business and Biodiversity assessment.
Literature search for BBA Chapter 6 Finance Section
#|
<- jsonlite::read_json(params$keypapers)
kp
<- sapply(
dois
kp,function(x) {
$DOI
x
}|>
) unlist() |>
unique() |>
as.character()
<- dois[!is.null(dois)] dois
Of the 22 keypapers, 20 have a DOI and can be used for the further search.
Searches are conducted with the OpenAlex API. The API is documented here.
#|
<- file.path("data", "key_works.rds")
fn if (!file.exists(fn)) {
<- oa_fetch(
key_works entity = "works",
doi = dois,
verbose = FALSE
)saveRDS(key_works, fn)
else {
} <- readRDS(fn)
key_works
}
<- IPBES.R::abbreviate_authors(key_works) key_works_cit
#|
<- openalexR:::shorten_oaid(key_works$id)
ids
<- file.path("data", "snowball.rds")
fn if (file.exists(fn)) {
<- readRDS(fn)
snowball else {
} <- oa_snowball(
snowball identifier = ids,
verbose = FALSE
)saveRDS(snowball, fn)
}
<- snowball2df(snowball) |>
flat_snow ::as_tibble() tibble
#|
<- file.path("data", "snowball_supplemented.rds")
fn if (file.exists(fn)) {
<- readRDS(fn)
snowball_supplemented else {
} <- tibble(
new_edges from = character(0),
to = character(0)
)
<- snowball$nodes$id
works
for (i in 1:nrow(snowball$nodes)) {
<- works[[i]]
from <- gsub("https://openalex.org/", "", snowball$nodes$referenced_works[[i]])
to <- to[to %in% works]
to_in_works if (length(to_in_works) > 0) {
<- add_row(
new_edges
new_edges,tibble(
from = from,
to = to_in_works
)
)
}
}
<- snowball
snowball_supplemented $edges <- add_row(snowball_supplemented$edges, new_edges) |>
snowball_supplementeddistinct()
saveRDS(snowball_supplemented, fn)
}
$edges |>
snowballfilter(from %in% names(key_works_cit)) |>
unique() |>
mutate(
cit = unlist(key_works_cit[from])
|>
) select(cit) |>
table() |>
as.data.frame() |>
arrange(desc(Freq)) |>
::kable(
knitrcol.names = c("Key paper", "Number of papers"),
caption = "Number of papers cited by Keypapers in the snowball search"
)
Key paper | Number of papers |
---|---|
Thiemann et al. (2020) | 83 |
Stellinga (2019) | 67 |
Baker (2018) | 66 |
Coombs & Thiemann (2022) | 57 |
Cassar (2023) | 54 |
Taylor (2022) | 53 |
Kranke & Yarrow (2018) | 48 |
Stellinga & Mügge (2017) | 36 |
Best (2022) | 31 |
Lockwood (2014) | 30 |
Siderius (2022) | 30 |
Quorning (2023) | 29 |
Mennillo & Sinclair (2019) | 27 |
Jackson & Bailey (2023) | 24 |
Özgöde (2021) | 23 |
Abreu & Lopes (2021) | 16 |
Langley & Morris (2020) | 13 |
Svetlova (2012) | 9 |
$edges |>
snowballfilter(to %in% names(key_works_cit)) |>
unique() |>
mutate(
cit = unlist(key_works_cit[to]),
|>
) select(cit) |>
table() |>
as.data.frame() |>
arrange(desc(Freq)) |>
::kable(
knitrcol.names = c("Key paper", "Number of papers"),
caption = "No of papers citing the Keypapers in the snowball search"
)
Key paper | Number of papers |
---|---|
Goede (2004) | 173 |
Svetlova (2012) | 70 |
Baker (2018) | 61 |
Lockwood (2014) | 56 |
Stellinga & Mügge (2017) | 27 |
Stellinga (2019) | 23 |
Kranke & Yarrow (2018) | 21 |
Coombs & Thiemann (2022) | 20 |
Langley & Morris (2020) | 19 |
Thiemann et al. (2020) | 19 |
Siderius (2022) | 14 |
Özgöde (2021) | 8 |
Best (2022) | 7 |
Quorning (2023) | 7 |
Taylor (2022) | 5 |
Mennillo & Sinclair (2019) | 4 |
Jackson & Bailey (2023) | 2 |
Abreu & Lopes (2021) | 1 |
#|
::to_xlsx(snowball) |>
IPBES.R::table_dt(caption = "Snowball search as Excel file", fixedColumns = NULL) IPBES.R
Warning in instance$preRenderHook(instance): It seems your data is too big for
client-side DataTables. You may consider server-side processing:
https://rstudio.github.io/DT/server.html
The column are: (the Concept columns are not that relevant at the moment)
#|
<- "snowball"
name if (
any(
!file.exists(
c(
file.path("figures", paste0(name, "_cited_by_count.png")),
file.path("figures", paste0(name, "_cited_by_count.pdf")),
file.path("figures", paste0(name, "_cited_by_count_by_year.png")),
file.path("figures", paste0(name, "_cited_by_count_by_year.pdf"))
)
)
)
) {<- snowball
snowball_p
for (i in seq_along(key_works_cit)) {
$nodes$id[snowball_p$nodes$id %in% key_works_cit[[i]]["id"]] <- key_works_cit[[i]]["cit"]
snowball_p$edges$from[snowball_p$edges$from %in% key_works_cit[[i]]["id"]] <- key_works_cit[[i]]["cit"]
snowball_p$edges$to[snowball_p$edges$to %in% key_works_cit[[i]]["id"]] <- key_works_cit[[i]]["cit"]
snowball_p
}
::plot_snowball(snowball_p, name = "snowball", path = "figures")
IPBES.Rrm(snowball_p)
}
To download the highres graph, please click here.
<- "snowball_supplemented"
name if (
any(
!file.exists(
c(
file.path("figures", paste0(name, "_cited_by_count.png")),
file.path("figures", paste0(name, "_cited_by_count.pdf")),
file.path("figures", paste0(name, "_cited_by_count_by_year.png")),
file.path("figures", paste0(name, "_cited_by_count_by_year.pdf"))
)
)
)
) {$nodes$cited_by_count_by_year <- snowball_supplemented$nodes$cited_by_count / (2024 - snowball_supplemented$nodes$publication_year)
snowball_supplemented
<- snowball_supplemented
snowball_p
for (i in seq_along(key_works_cit)) {
$nodes$id[snowball_p$nodes$id %in% key_works_cit[[i]]["id"]] <- key_works_cit[[i]]["cit"]
snowball_p$edges$from[snowball_p$edges$from %in% key_works_cit[[i]]["id"]] <- key_works_cit[[i]]["cit"]
snowball_p$edges$to[snowball_p$edges$to %in% key_works_cit[[i]]["id"]] <- key_works_cit[[i]]["cit"]
snowball_p
}
::plot_snowball(snowball_p, name = name, path = "figures")
IPBES.Rrm(snowball_p)
}