library(magrittr)
library(stringr)
library(futile.logger)
library(dplyr, warn.conflicts = FALSE)
library(hsfclmap)
cores <- parallel::detectCores(all.tests = TRUE)
if(cores > 1) {
library(foreach)
library(doParallel)
doParallel::registerDoParallel(cores = cores)
}
trade <- esdata13
tariffline <- FALSE
reportdir <- file.path(
tempdir(),
"faoreports",
format(Sys.time(), "%Y%m%d%H%M%S%Z"))
stopifnot(!file.exists(reportdir))
dir.create(reportdir, recursive = TRUE)
if(!tariffline)
trade %<>% esdata2faoarea(loadgeonom()) else {
m49faomap <- loaddatafromweb(
"https://github.com/SWS-Methodology/faoswsTrade/blob/master/data/m49faomap.RData?raw=true")
trade %<>%
left_join(m49faomap, by = c("reporter" = "m49")) %>%
select_(~-reporter, reporter = ~fao)
}
if(tariffline)
trade %<>%
mutate_(flow = ~recode(flow, '4' = 1L, '3' = 2L))
hsfclmap4 <- hsfclmap3 %>%
filter(str_detect(fromcode, "^\\d+$"),
str_detect(tocode, "^\\d+$")) %>%
mutate(linkid = row_number())
trade %<>% do(hsInRange(.$hs, .$reporter, .$flow,
hsfclmap4,
parallel = cores > 1L))
layout.glimpse <- function(level, tbl, ...) dplyr::as.tbl(tbl)
appender.glimpse <- function(tbl) tbl
trade <- trade %>%
# Mapping statistics
group_by(id) %>%
mutate_(multlink = ~length(unique(fcl)) > 1,
nolink = ~any(is.na(fcl))) %>%
ungroup() %>%
arrange_(~area, ~flow, ~hsorig)
trade %>%
filter_(~nolink) %>%
select_(~area, ~flow, hs = ~hsorig) %>%
write.csv(file = file.path(reportdir, "nolinks.csv"),
row.names = FALSE)
trade %>%
filter_(~multlink) %>%
select_(~area, ~flow, hs = ~hsorig, ~fcl) %>%
write.csv(file = file.path(reportdir, "multilinks.csv"),
row.names = FALSE)
flog.info("Reports in %s/",
reportdir)
trade %>%
group_by_(~id) %>%
summarize_(multlink = ~sum(any(multlink)),
nolink = ~sum(any(nolink))) %>%
summarize_(totalrecsmulti = ~sum(multlink),
totalnolink = ~sum(nolink),
propmulti = ~sum(multlink) / n(),
propnolink = ~sum(nolink) / n()) %>%
{flog.info("Multi and no link:", ., capture = TRUE)}
# Remove ES reporters from TL
esreporters <- unique(esdatafcl14$area)
trade <- trade %>%
filter(!area %in% esreporters)
# Idea for split ranges
x <- tibble::tribble(
~year, ~fcl,
1, 1,
2, 1,
3, 1,
4, 2,
5, 2,
6, 1,
7, 1)
x %>%
mutate(change = fcl != lag(fcl),
change = ifelse(is.na(change), FALSE, change),
change = cumsum(change))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.