diff --git a/TODO/PensionTables_Austria_AVOe1999P.R b/inst/extdata/PensionTables_Austria_AVOe1999P.R similarity index 74% rename from TODO/PensionTables_Austria_AVOe1999P.R rename to inst/extdata/PensionTables_Austria_AVOe1999P.R index a027006b68888c6dfc7628a7e8bac3b696dc85b6..6ad9c025b6564e970e6d2afef8d61aa425d92748 100644 --- a/TODO/PensionTables_Austria_AVOe1999P.R +++ b/inst/extdata/PensionTables_Austria_AVOe1999P.R @@ -1,15 +1,25 @@ #' @import MortalityTables NULL -stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables), require(readxl)) # MortalityTable classes; new; Excel reader + +# TODO: +# *) Arbeitsmarkteffekt + +############################################################################### # +# Pension Table AVÖ 2018-P ---- +############################################################################### # + +if (is.null(getOption("MortalityTables.AVOe1999P"))) { + message("The pension table AVÖ 1999P requires the Excel file 'Austria_Pensions_AVOe1999P.xlsx'. Please set its path with options(\"MortalityTables.AVOe1999P\" = \"/path/to/Austria_Pensions_AVOe1999P.xlsx\").") +} else { + ############################################################################### # AVÖ 1999P exact (Male, Female) ############################################################################### - - -AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { +AVOe1999P.generate = function(tab, name="P", collar = "Angestellte") { table99 = function(name, data, agevar = "x", probvar, trendvar = NULL, dim = list(), ..., baseyear = 1982) { if (is.null(trendvar)) { mortalityTable.period( @@ -26,18 +36,16 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { paste("AVÖ 1999-", name, ", ", desc, sep = "") } - data = utils::read.csv( - system.file("extdata", file, package = "MortalityTablesPrivate"), + data = read_excel( + getOption("MortalityTables.AVOe1999P"), sheet = tab, skip = 4, - header = FALSE, - col.names = c( - "x", - "qaax", "qix", "qpx", "qgx", "qwy", "ix", "hx", "yx", - "SPACER", - "qaay", "qiy", "qpy", "qgy", "qwx", "iy", "hy", "xy", - "SPACER", "lambdax", "lambday") - ); - + col_names = c( + "x", + "qaax", "qix", "qpx", "qgx", "qwy", "ix", "hx", "yx", + "SPACER1", + "qaay", "qiy", "qpy", "qgy", "qwx", "iy", "hy", "xy", + "SPACER2", "lambdax", "lambday") + ) male = pensionTable( name = name99p(name, "Männer"), @@ -50,8 +58,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), qix = table99(name99p(name, "qix, disabled males"), data, "x", "qix", "lambdax", dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), - rx = mortalityTable.zeroes(name = "No reactivation", ages = data[["x"]]), - apx = mortalityTable.once(transitionAge = 65 - 1, name = "Pensionsalter 65", ages = data[["x"]]), + rx = mortalityTable.zeroes(name = "No reactivation", ages = data$x), + apx = mortalityTable.once(transitionAge = 65 - 1, name = "Pensionsalter 65", ages = data$x), qpx = table99(name99p(name, "qpx, retired males"), data, "x", "qpx", "lambdax", dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), hx = table99(name99p(name, "hx, marriage probability"), data, "x", "hx", @@ -79,8 +87,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), qix = table99(name99p(name, "qiy, disabled females"), data, "x", "qix", "lambday", dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), - rx = mortalityTable.zeroes(name = "No reactivation", ages = data[["x"]]), - apx = mortalityTable.once(transitionAge = 60 - 1, name = "Pensionsalter 60", ages = data[["x"]]), + rx = mortalityTable.zeroes(name = "No reactivation", ages = data$x), + apx = mortalityTable.once(transitionAge = 60 - 1, name = "Pensionsalter 60", ages = data$x), qpx = table99(name99p(name, "qpy, retired females"), data, "x", "qpx", "lambday", dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), hx = table99(name99p(name, "hy, marriage probability"), data, "x", "hy", @@ -100,44 +108,33 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { list(male = male, female = female) } -AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_Angestellte.csv", "P", collar = "Angestellte") -AVOe1999P.male = AVOe1999P.tmp$male -AVOe1999P.female = AVOe1999P.tmp$female - -AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_ArbeiterAngestellte.csv", "P Arb./Ang.", collar = "Mischbestand") -AVOe1999P.male.ArbAng = AVOe1999P.tmp$male -AVOe1999P.female.ArbAng = AVOe1999P.tmp$female - -AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_Angestellte.csv", "PK", collar = "Angestellte") -AVOe1999P.male.PK = AVOe1999P.tmp$male -AVOe1999P.female.PK = AVOe1999P.tmp$female - -AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_ArbeiterAngestellte.csv", "PK Arb./Ang.", collar = "Mischbestand") -AVOe1999P.male.ArbAng.PK = AVOe1999P.tmp$male -AVOe1999P.female.ArbAng.PK = AVOe1999P.tmp$female - - ############################################################################## # # Die Tafel als Array ---- ############################################################################## # AVOe1999P = array( data = c(mortalityTable.NA), - dim = c(2, 2, 1, 2), - dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"), Invalidisierung = c("IP"), Typ = c("P", "PK")) + dim = c(2, 2), + dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand")) +) +AVOe1999PK = array( + data = c(mortalityTable.NA), + dim = c(2, 2), + dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand")) ) +AVOe1999P[, "Angestellte"] = AVOe1999P.generate(tab = "Angestellte", "P", collar = "Angestellte") +AVOe1999P[, "Mischbestand"] = AVOe1999P.generate(tab = "Arbeiter+Angestellte", "P Arb./Ang.", collar = "Mischbestand") +AVOe1999PK[, "Angestellte"] = AVOe1999P.generate(tab = "Angestellte PK", "PK", collar = "Angestellte") +AVOe1999PK[, "Mischbestand"] = AVOe1999P.generate(tab = "Arbeiter+Angestellte PK", "P< Arb./Ang.", collar = "Mischbestand") -AVOe1999P[["m", "Angestellte", "IP", "P"]] = AVOe1999P.male -AVOe1999P[["w", "Angestellte", "IP", "P"]] = AVOe1999P.female -AVOe1999P[["m", "Mischbestand", "IP", "P"]] = AVOe1999P.male.ArbAng -AVOe1999P[["w", "Mischbestand", "IP", "P"]] = AVOe1999P.female.ArbAng -AVOe1999P[["m", "Angestellte", "IP", "PK"]] = AVOe1999P.male.PK -AVOe1999P[["w", "Angestellte", "IP", "PK"]] = AVOe1999P.female.PK -AVOe1999P[["m", "Mischbestand", "IP", "PK"]] = AVOe1999P.male.ArbAng.PK -AVOe1999P[["w", "Mischbestand", "IP", "PK"]] = AVOe1999P.female.ArbAng.PK +AVOe1999P.male = AVOe1999P[["m", "Angestellte"]] +AVOe1999P.female = AVOe1999P[["w", "Angestellte"]] +AVOe1999P.male.Misch = AVOe1999P[["m", "Mischbestand"]] +AVOe1999P.female.Misch = AVOe1999P[["w", "Mischbestand"]] +rm(AVOe1999P.generate) -rm(AVOe1999P.generate, AVOe1999P.tmp) +} diff --git a/vignettes/international-mortality-tables-overview.Rmd b/vignettes/international-mortality-tables-overview.Rmd index dbaf365642005e09bc017887ccb7636082a5aa51..8e60822fb72d498be68233ca08093fc3bbc29781 100644 --- a/vignettes/international-mortality-tables-overview.Rmd +++ b/vignettes/international-mortality-tables-overview.Rmd @@ -399,6 +399,7 @@ Verlag: Verband der wissenschaftlichen Gesellschaften Österreichs, Wien, 1989 ```{r AVOe1999P, results="hide"} pensionTables.load("Austria_AVOe1999P") AVOe1999P +AVOe1999PK ``` @@ -435,7 +436,7 @@ AVOe2018P ```{r AT.pensionTables.Comparison} plotMortalityTables( EttlPagler.male %>% pT.getSubTable("qx"), - AVOe1999P["m",,"IP", "P"] %>% pT.getSubTable("qx"), + AVOe1999P["m",] %>% pT.getSubTable("qx"), AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("qx"), AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("qx"), legend.position = c(0.01, 0.99), legend.justification = c(0,1), @@ -444,7 +445,7 @@ plotMortalityTables( plotMortalityTables( EttlPagler.male %>% pT.getSubTable("hx"), - AVOe1999P["m",,"IP", "P"] %>% pT.getSubTable("hx"), + AVOe1999P["m",] %>% pT.getSubTable("hx"), AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("hx"), AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("hx"), # legend.position = c(0.01, 0.99), legend.justification = c(0,1),