如何在 R 中一次对多个维基百科文章 运行 article_pageviews 函数,将输出保存在数据框中?
How to run the article_pageviews function on multiple wikipedia articles at once in R, saving the output in a data frame?
我目前正在尝试使用 pageviews
包中的 article_pageviews
函数从维基百科收集维基百科查看数据(某篇文章在给定时间范围内的查看次数)。我还有一个数据框,其中包含我希望从中提取查看数据的维基百科文章的名称。
我的包含名称的数据框如下所示:
name Variable1 Variable2
Henry V . .
Henry VI . .
Henry VII . .
. . .
. . .
. . .
为了提取观看数据,我使用了以下代码
Viewings <- article_pageviews(
project = "en.wikipedia",
article = "name of wikipedia article",
platform = "all",
user_type = "all",
start = as.Date('2019-01-01'),
end = as.Date('2020-01-01'),
reformat = TRUE,
granularity = "monthly"
)
运行 这行代码产生一个 table,其中包含变量 views
的 12 个观测值(每个月 1 个)。我对所有 12 个观察的所有视图的总和感兴趣
sum(Viewings$views)
我想知道是否有办法 运行 我保存在我的数据框中的维基百科页面名称上的 article_pageviews
函数,一次全部并保存总和(Viewings$views)对于数据框中的每篇文章。唯一的选择是 运行 每个维基百科文章上的 article_pageviews
函数,但很想知道是否有一种方法可以自动执行此过程。
您可以让 purrr
中的 map_dbl
使用您 df 中的名称作为输入并获取所有网页浏览量。
library(dplyr)
library(purrr)
library(pageviews)
df <- tibble(name = c('Henry V', 'Henry VI', 'Henry VII', 'sadfasdfasdf'))
Viewings <- df %>%
mutate(
views_total = map_dbl(name, .f = function(article){
tryCatch({
article_pageviews(
project = "en.wikipedia",
article = article,
platform = "all",
user_type = "all",
start = as.Date('2019-01-01'),
end = as.Date('2020-01-01'),
reformat = TRUE,
granularity = "monthly"
) %>%
pull(views) %>%
sum(na.rm=T)
},
error = function(e){return(NA_real_)}
)
})
)
以上代码确实涵盖了无法找到某篇文章的可能性(例如'sadfasdfasdf'),在这种情况下,map 函数会捕获由此产生的错误,而不是 returns NA
.
我目前正在尝试使用 pageviews
包中的 article_pageviews
函数从维基百科收集维基百科查看数据(某篇文章在给定时间范围内的查看次数)。我还有一个数据框,其中包含我希望从中提取查看数据的维基百科文章的名称。
我的包含名称的数据框如下所示:
name Variable1 Variable2
Henry V . .
Henry VI . .
Henry VII . .
. . .
. . .
. . .
为了提取观看数据,我使用了以下代码
Viewings <- article_pageviews(
project = "en.wikipedia",
article = "name of wikipedia article",
platform = "all",
user_type = "all",
start = as.Date('2019-01-01'),
end = as.Date('2020-01-01'),
reformat = TRUE,
granularity = "monthly"
)
运行 这行代码产生一个 table,其中包含变量 views
的 12 个观测值(每个月 1 个)。我对所有 12 个观察的所有视图的总和感兴趣
sum(Viewings$views)
我想知道是否有办法 运行 我保存在我的数据框中的维基百科页面名称上的 article_pageviews
函数,一次全部并保存总和(Viewings$views)对于数据框中的每篇文章。唯一的选择是 运行 每个维基百科文章上的 article_pageviews
函数,但很想知道是否有一种方法可以自动执行此过程。
您可以让 purrr
中的 map_dbl
使用您 df 中的名称作为输入并获取所有网页浏览量。
library(dplyr)
library(purrr)
library(pageviews)
df <- tibble(name = c('Henry V', 'Henry VI', 'Henry VII', 'sadfasdfasdf'))
Viewings <- df %>%
mutate(
views_total = map_dbl(name, .f = function(article){
tryCatch({
article_pageviews(
project = "en.wikipedia",
article = article,
platform = "all",
user_type = "all",
start = as.Date('2019-01-01'),
end = as.Date('2020-01-01'),
reformat = TRUE,
granularity = "monthly"
) %>%
pull(views) %>%
sum(na.rm=T)
},
error = function(e){return(NA_real_)}
)
})
)
以上代码确实涵盖了无法找到某篇文章的可能性(例如'sadfasdfasdf'),在这种情况下,map 函数会捕获由此产生的错误,而不是 returns NA
.