我的目标是自动化趋势数据的提取以及从列表中提取"interest_over_time"
。
考虑两个步骤的问题:
基于一组关键字自动获取数据
有条不紊地自动提取元素
我无法完成第2步。
关于如何完成此操作的任何想法?
第一步-自动获取Google趋势数据
library(gtrendsR)
a <- c("sony", "apple")
for (i in a) {
name <- (paste(i, sep=""))
assign(name, gtrends(keyword=i, time="now 1-H"))
print(name)
}
Step2-提取元素
sony[["interest_over_time"]]
代替上面的手动操作,我可以使用for或其他功能来自动执行此操作吗?
答案 0 :(得分:0)
您可以使用sapply
阅读。数据将存储到列表l
中。
library(gtrendsR)
l <- sapply(c("sony", "apple"), function(i) gtrends(keyword=i, time="now 1-H"))
使用l[[1]]
和l[[2]]
访问数据。
head(l[[1]])
# date hits keyword geo gprop category
# 1 2019-04-21 09:14:00 74 sony world web 0
# 2 2019-04-21 09:15:00 72 sony world web 0
# 3 2019-04-21 09:16:00 75 sony world web 0
# 4 2019-04-21 09:17:00 84 sony world web 0
# 5 2019-04-21 09:18:00 78 sony world web 0
# 6 2019-04-21 09:19:00 83 sony world web 0
head(l[[2]])
# location hits keyword geo gprop
# 1 Falkland Islands (Islas Malvinas) NA sony world web
# 2 São Tomé & PrÃncipe NA sony world web
# 3 Seychelles NA sony world web
# 4 St. Kitts & Nevis NA sony world web
# 5 Hong Kong 100 sony world web
# 6 Nepal 84 sony world web
答案 1 :(得分:0)
以下是我认为可以为您提供所需内容的几种方法。
library(gtrendsR)
a = c("sony","apple")
第一种方法:使用base
R
gtrends_interest <- function(keyword) gtrends(keyword = keyword, time = "now 1-H")[["interest_over_time"]]
trends_data <- do.call('rbind', lapply(a, gtrends_interest))
第二种方式:使用purrr
library(purrr)
trends_data2 <- a %>%
map_df( ~ gtrends(keyword = ., time = "now 1-H")[["interest_over_time"]])
这两个方法将从堆叠的data.frame
中的每个元素中返回一个interest_over_time
的{{1}}。
我更喜欢第二种,因为一旦掌握了a
就会变得非常强大。