#' Function that returns a dataset
#'
#'
#' @param dataset Name of data set within the SSBtools package
#'
#' @return data frame
#'
#' @details
#' \strong{FIFA2018ABCD:} A hierarchy table based on
#' countries within groups A-D in the football championship, 2018 FIFA World Cup.
#'
#' \strong{sprt_emp:} Employment in sport in thousand persons. Data from Eurostat database.
#'
#' \strong{sprt_emp_geoHier:} Country hierarchy for the employment in sport data.
#'
#' \strong{sprt_emp_ageHier:} Age hierarchy for the employment in sport data.
#'
#' \strong{sprt_emp_withEU:} The data set sprt_emp extended with a EU variable.
#'
#' \strong{sp_emp_withEU:} As `sprt_emp_withEU`, but coded differently.
#'
#' \strong{example1} Example data similar to `sp_emp_withEU`.
#'
#' \strong{magnitude1:} Example data for magnitude tabulation. Same countries as above.
#'
#' \strong{my_km2:} Fictitious grid data.
#'
#' \strong{mun_accidents:} Fictitious traffic accident by municipality data.
#'
#' \strong{sosialFiktiv, z1, z1w, z2, z2w, z3, z3w, z3wb:} See \code{\link{sosialFiktiv}}.
#'
#' \strong{d4, d1, d1w, d2, d2w, d3, d3w, d3wb:} English translation of the datasets above.
#'
#' \strong{d2s, d2ws:} `d2` and `d2w` modified to smaller/easier data.
#'
#' \strong{power10to1, power10to2, \eqn{\ldots}:} `power10to`\eqn{i} is hierarchical data with \eqn{10^i} rows and \eqn{2*i} columns.
#' Tip: Try `FindDimLists(SSBtoolsData("power10to3"))`
#'
#' @export
#' @importFrom utils data
#' @author Øyvind Langsrud and Daniel Lupp
#'
#' @examples
#' SSBtoolsData("FIFA2018ABCD")
#' SSBtoolsData("sprt_emp")
#' SSBtoolsData("sprt_emp_geoHier")
#' SSBtoolsData("sprt_emp_ageHier")
#' SSBtoolsData("sprt_emp_withEU")
#' SSBtoolsData("d1w")
SSBtoolsData <- function(dataset) {
if (dataset == "FIFA2018ABCD") {
return(data.frame(stringsAsFactors = FALSE, mapsFrom = c("Australia", "Iran", "Saudi Arabia", "Egypt", "Morocco", "Nigeria", "Argentina", "Peru", "Uruguay", "Croatia", "Denmark", "France", "Iceland", "Portugal", "Russia", "Spain", "Iceland", "Russia", "Russia", "Croatia", "Europe", "nonEU", "Europe", "nonSchengen"),
mapsTo = c("Oceania", rep("Asia", 2), rep("Africa", 3), rep("America", 3), rep("Europe", 7), rep("nonEU", 2), rep("nonSchengen", 2), rep("EU", 2), rep("Schengen", 2)),
sign = c(rep(1, 21), -1, 1, -1), level = c(rep(1, 20), c(rep(2, 4)))))
}
if (dataset == "sprt_emp") {
# Employment in sport , _age http://ec.europa.eu/eurostat/web/sport/employment-in-sport/data/database Employment in sport in thousand persons
ths <- c(51.1, 1.8, 7.3, 96.4, 1.6, 16.1, 55, 1.7, 6.9, 103.8, 1.7, 14.8, 63.6, 1.9, 10.5, 99.4, 1.6, 17.6, 66.9, 1.8, 11.6, 120.3, 1.5, 20.2, 63.4, 1.9, 14.2, 119.6, 1.6, 24.3, 69.1, 1.9, 12.7, 122.1, 1.9, 25.8)
x <- data.frame(age = c(rep("Y15-29", 3), rep("Y30-64", 3)), geo = c("Spain", "Iceland", "Portugal"), year = as.character(rep(2011:2016, each = 6)), ths_per = ths, stringsAsFactors = FALSE)
x <- x[x$year %in% as.character(2014:2016), ]
rownames(x) <- NULL
return(x)
}
if (dataset == "sprt_emp_ageHier") {
return(data.frame(stringsAsFactors = FALSE, mapsFrom = c("Y15-29", "Y30-64"), mapsTo = "Y15-64", sign = 1, level = 1))
}
if (dataset == "sprt_emp_geoHier") {
h <- SSBtoolsData("FIFA2018ABCD")
h <- h[h$mapsFrom %in% c("Spain", "Iceland", "Portugal", "Europe", "nonEU") & h$mapsTo != "Schengen", ]
rownames(h) <- NULL
return(h)
}
if (dataset == "sprt_emp_withEU") {
x <- SSBtoolsData("sprt_emp")
x$eu = with(x, c("EU", "nonEU")[1+(geo=="Iceland")])
return(x)
}
if (dataset == "sp_emp_withEU") {
x <- SSBtoolsData("sprt_emp_withEU")[,c(1,2,5,3,4)]
names(x)[5] <- "value"
x$age[x$age == "Y15-29"] <- "young"
x$age[x$age == "Y30-64"] <- "old"
return(x)
}
if (dataset == "my_km2") { # my_km² not allowed, Portable packages must use only ASCII characters in their R code,
x <- data.frame(Square1000m = c(rep("my_km",10), rep("another_km",8)),
Square250m = c(rep("500_000",3), rep("750_250",4), rep("750_500",3), rep("another_500_000",4), rep("another_750_250",4)),
Municipality = c(rep("Oslo",3), rep("Nittedal",6), rep("Oslo",9)),
Age = c("15_to_65", "15_to_65", "under_15", "15_to_65", "15_to_65", "under_15", "under_15", "65_and_over", "65_and_over", "15_to_65",
"15_to_65", "15_to_65", "under_15", "under_15", "15_to_65", "15_to_65", "65_and_over", "65_and_over"),
Sex = c("female", "male", "male", "female", "male", "female", "male", "female", "male", "female", "female", "male", "female", "male",
"female", "male", "female", "male"),
freq = c(3L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 26L, 21L, 31L, 34L, 2L, 1L, 10L, 13L))
return(x)
}
if (dataset == "mun_accidents") {
mun <- c("k1", "k2", "k3", "k4", "k5", "k6")
inj <- c("serious", "light", "none", "unknown")
x <- expand.grid(mun, inj, stringsAsFactors = FALSE)
names(x) <- c("mun", "inj")
x$freq <- c(4L, 5L, 3L, 4L, 1L, 6L, 0L, 0L, 2L, 1L, 0L, 0L, 0L, 1L, 1L,
4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)
return(x)
}
socialDataset <- c(d4 = "sosialFiktiv",
d1 = "z1", d1w = "z1w",
d2 = "z2", d2w = "z2w",
d3 = "z3", d3w = "z3w", d3wb = "z3wb")
if (dataset %in% socialDataset) {
return(SSBtoolsData_(dataset))
}
if (dataset %in% names(socialDataset)) {
z <- SSBtoolsData_(socialDataset[dataset])
if("hovedint" %in% names(z)){
z$hovedint <- SocialReCode(z$hovedint)
}
names(z) <- SocialReCode(names(z))
for(i in which(sapply(z, is.numeric))){
z[[i]] <- as.integer(z[[i]])
}
row.names(z) <- NULL
return(z)
}
if (dataset == "d2s") {
return(Make_d2small(SSBtoolsData("d2")))
}
if (dataset == "d2ws") {
return(Make_d2small(SSBtoolsData("d2w"), freq = "other"))
}
if (dataset == "magnitude1") {
q <- data.frame(geo = rep(c("Iceland", "Portugal", "Spain"), each = 4),
eu = "EU",
sector4 = c("Agriculture", "Entertainment", "Governmental", "Industry"),
sector2 = "private")[-c(1, 3), ]
q$eu[1:2] <- "nonEU"
q$sector2[c(5, 9)] <- "public"
q <- q[c(2, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10), ]
q$company <- c("B", "B", "C", "D", "A", "B", "B", "D", "B", "D",
"B", "D", "A", "B", "A", "B", "C", "C", "D", "C")
q$value <- c(9.6, 16.8, 8.8, 1.9, 75.9, 24.5, 7.1, 2.3, 21.6, 2,
25.7, 3.4, 96.6, 43.2, 77.4, 11.5, 16.4, 6.5, 2.7, 8.4)
q <- SortRows(q[c(3, 4, 1, 2, 5, 6)])
rownames(q) <- NULL
return(q)
}
if (dataset == "example1") {
q <- SSBtoolsData("sprt_emp_withEU")[, c(1, 2, 5, 3)]
q$age[q$age == "Y15-29"] <- "young"
q$age[q$age == "Y30-64"] <- "old"
q$freq <- c(5, 2, 0, 6, 3, 4, 5, 0, 0, 6, 3, 4, 7, 1, 1, 5, 4, 3)
rownames(q) <- NULL
return(q)
}
if (substr(dataset, 1, 9) == "power10to") {
n <- as.integer(substr(dataset, 10, 20))
if (n > 26) {
stop("Not enough letters for coding")
}
return(Power10toN(n))
}
stop(paste("No data with dataset =", dataset))
}
P10 <- function(nam = c("a", "A")) {
z <- data.frame(1:10, c(100, 100, 200, 200, 200, rep(300, 5)))
names(z) <- nam
for (i in seq_along(z)) {
z[[i]] <- paste0(names(z)[i], z[[i]])
}
z
}
Power10toN <- function(n) {
z <- P10()
for (i in SeqInc(2, n)) {
z <- CrossCodeFrames(z, P10(c(letters[i], LETTERS[i])))
}
z
}
Make_d2small <- function(data, freq = "freq") { # Modify to smaller/easier data
sreg <- c("A", "B", "C", "I", "J", "K")
data <- data[data$region %in% sreg, ]
names(data)[names(data) == "k_group"] <- "size"
data$size[data$size == "300"] <- "BIG"
data$size[data$size == "400"] <- "small"
data$county[data$county == 1] <- "county-1"
data$county[data$county == 4] <- "county-2"
data$county[data$county == 5] <- "county-2"
data$county[data$county == 10] <- "county-3"
data$region[data$region == "I"] <- "D"
data$region[data$region == "J"] <- "E"
data$region[data$region == "K"] <- "F"
data[[freq]][1:2] <- 2:3
rownames(data) <- NULL
data
}
#Based on Kostra::CharacterReCode
SocialReCode <- function(x,oldLevels = names(newLevels),
newLevels =
# # generated by
# z3 <- SSBtoolsData("z3")
# z3w <- SSBtoolsData("z3w")
# z3wb <- SSBtoolsData("z3wb")
# a <- unique(c(names(z3), z3$hovedint, names(z3w), names(z3wb)))
# names(a) <- a
# # See https://www.ssb.no/en/statbank/table/12203
# a <- gsub("fylke", "county", a)
# a <- gsub("kostragr", "k_group", a) # KOSTRA-groups
# a <- gsub("hovedint", "main_income", a) # main source of income
# a <- gsub("mnd", "months", a)
# a <- gsub("ant", "freq", a)
# a <- gsub("annet", "other", a)
# a <- gsub("arbeid", "wages", a) # Norwegian: arbeidsinntekt
# a <- gsub("soshjelp", "assistance", a) # social assistance
# a <- gsub("trygd", "pensions", a) # Norwegian: trygd/pensjon, English: just pensions
# dput(a)
c(region = "region", fylke = "county", kostragr = "k_group",
hovedint = "main_income", mnd = "months", mnd2 = "months2", ant = "freq",
annet = "other", arbeid = "wages", soshjelp = "assistance", trygd = "pensions",
annet_m01m05 = "other_m01m05", arbeid_m01m05 = "wages_m01m05",
soshjelp_m01m05 = "assistance_m01m05", trygd_m01m05 = "pensions_m01m05",
annet_m10m12 = "other_m10m12", arbeid_m10m12 = "wages_m10m12",
soshjelp_m10m12 = "assistance_m10m12", trygd_m10m12 = "pensions_m10m12",
annet_m06m09 = "other_m06m09", arbeid_m06m09 = "wages_m06m09",
soshjelp_m06m09 = "assistance_m06m09", trygd_m06m09 = "pensions_m06m09",
annet_m01m05_M01M05 = "other_m01m05_M01M05", arbeid_m01m05_M01M05 = "wages_m01m05_M01M05",
soshjelp_m01m05_M01M05 = "assistance_m01m05_M01M05", trygd_m01m05_M01M05 = "pensions_m01m05_M01M05",
annet_m10m12_M06M12 = "other_m10m12_M06M12", arbeid_m10m12_M06M12 = "wages_m10m12_M06M12",
soshjelp_m10m12_M06M12 = "assistance_m10m12_M06M12", trygd_m10m12_M06M12 = "pensions_m10m12_M06M12",
annet_m06m09_M06M12 = "other_m06m09_M06M12", arbeid_m06m09_M06M12 = "wages_m06m09_M06M12",
soshjelp_m06m09_M06M12 = "assistance_m06m09_M06M12", trygd_m06m09_M06M12 = "pensions_m06m09_M06M12")){
x <- as.factor(x)
le <- levels(x)
ma <- match(le, oldLevels)
isMatch <- !is.na(ma)
le[isMatch] <- newLevels[ma[isMatch]]
levels(x) <- le
as.character(x)
}
# stackoverflow questions 30357330
pkgEnvSSBtoolsData <- new.env(parent=emptyenv())
SSBtoolsData_ <- function(dataset) {
if (!exists(dataset, pkgEnvSSBtoolsData))
data(list = dataset, package = "SSBtools", envir = pkgEnvSSBtoolsData)
return(pkgEnvSSBtoolsData[[dataset]])
return(NULL)
}
#' Fictitious datasets returned by SSBtoolsData()
#'
#' The most comprehensive dataset, \code{sosialFiktiv}, contains three dimensions.
#' The first dimension is 'region' which is grouped in two ways, 'fylke' and
#' 'kostragr'. The other two are 'hovedint' and 'mnd'. In 'mnd2' two of the
#' three categories in 'mnd' are merged.
#' The other datasets (\code{z1}, \code{z1w}, \code{z2}, \code{z2w}, \code{z3},
#' \code{z3w}, \code{z3wb}) are smaller subdatasets.
#' Datasets marked with '\code{w}' are unstacked and several variables are holding counts.
#'
#' @docType data
#' @keywords datasets internal
#' @name sosialFiktiv
NULL
#' @rdname sosialFiktiv
#' @name z1
NULL
#' @rdname sosialFiktiv
#' @name z1micro
NULL
#' @rdname sosialFiktiv
#' @name z1w
NULL
#' @rdname sosialFiktiv
#' @name z2
NULL
#' @rdname sosialFiktiv
#' @name z2w
NULL
#' @rdname sosialFiktiv
#' @name z3
NULL
#' @rdname sosialFiktiv
#' @name z3w
NULL
#' @rdname sosialFiktiv
#' @name z3wb
NULL
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.