我是一个初学者R试图做一些分析联合国商品贸易数据使用'comtradr‘包。
作为背景,一揽子方案要求从商品贸易委员会数据库获得数据(例如中国1992-2021年的鱼出口)。
我知道我想做什么,但我正在努力想办法去做。
在简单的语言中,对于列表中的国家(country_list如下所示),我希望提取导入数据,然后使用ct_search函数提取导出数据。
然后,我希望选择相关栏,并在两个单独的线图图中绘制每个国家的进出口图。
country_list <- list("China", "United States", "India") --这应该填补了ct_search函数中的记者字段。
trade_list <- list("exports", "imports") --这将填充ct_search函数中的trade_direction字段。
我可以为一个国家这样做,如下所示,并可以复制粘贴每个国家的代码,但我知道这是没有效率的。
我猜这是一个函数+循环的混合,但我不知道如何在R .有人能举个例子吗?直截了当吗?因此,理想情况下,产量将是六块土地--中国、美国和印度的进口和出口地块。
任何帮助都非常感谢!
--
library(tidyverse)
library(comtradr)
df <- ct_search(
reporters = "China",
partners = "World",
trade_direction = "exports",
freq = "annual",
commod_codes = "030520",
type = "goods"
)
df2 <- df %>%
select(year, qty, trade_value_usd)
ggplot(data = df2, aes(x = year, y = qty)) +
geom_line(size = 1) +
geom_point(size = 2) +
theme_bw()发布于 2022-09-28 07:21:12
ct_search允许传递字符向量(!!)的情况下,不必遍历国家和贸易方向来获取数据,即使用c而不是list。注意,例如,对于"United States",您必须使用"USA"。split您的数据,将您的绘图代码放在一个函数中,并使用例如purrr::imap来循环处理国家数据列表。使用imap可以方便地将国家名称作为第二个参数传递给绘图函数,我将其添加为绘图标题。我使用facet_wrap来创建每个国家的进出口图,而不是单独的进出口地块。library(tidyverse)
library(comtradr)
country_list <- c("China", "United States" = "USA", "India")
trade_list <- c("exports", "imports")
df <- ct_search(
reporters = country_list,
partners = "World",
trade_direction = trade_list,
freq = "annual",
commod_codes = "030520",
type = "goods"
)
df2 <- df %>%
select(year, qty, trade_value_usd, reporter, trade_flow)
plot_fun <- function(.data, cntry) {
ggplot(data = .data, aes(x = year, y = qty)) +
geom_line(size = 1) +
geom_point(size = 2) +
facet_wrap(~trade_flow) +
theme_bw() +
labs(title = cntry)
}
df2 %>%
split(.$reporter) %>%
purrr::imap(plot_fun)
#> $China

#>
#> $India

#>
#> $USA

https://stackoverflow.com/questions/73877243
复制相似问题