Skip to content
Permalink
35e1abc2f3
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
268 lines (219 sloc) 9.42 KB
# Rainer Walke, MPIDR Rostock
#' @importFrom methods new show validObject
NULL
#' @importFrom data.table := fread setnames
NULL
####
# Class for 'GENESIS-Tabelle: 12613-02-02-4'
#' @export
setClass("RD1",
slots=c(
header="vector", # file header
footer="vector", # file footer
rd1="data.table", # exposure table
rd1total="data.table", # exposure table total sums
content="character", # content
region="character", # region
protocol="character" # protocol version
)
)
# slot getters
#' @export
setMethod("header", "RD1", function(object) object@header)
#' @export
setMethod("footer", "RD1", function(object) object@footer)
#' @export
setMethod("rd1", "RD1", function(object) object@rd1)
#' @export
setMethod("rd1total", "RD1", function(object) object@rd1total)
#' @export
setMethod("content", "RD1", function(object) object@content)
#' @export
setMethod("region", "RD1", function(object) object@region)
#' @export
setMethod("protocol", "RD1", function(object) object@protocol)
# constructor
#' @export
RegDeath1 <- function(header, footer, rd1, rd1total, content, region, protocol)
new("RD1", header=header, footer=footer, rd1=rd1, rd1total=rd1total, content=content, region=region, protocol=protocol)
# methods
#' @export
setMethod("length", "RD1", function(x) dim(x@rd1)[1])
#' @export
setMethod("show", "RD1",
function(object)
cat(class(object), "instance with length", length(object), "\n")
)
#' @export
setMethod("selectYears", "RD1", function(object, selectYears) {
Year <- NULL # evoid NOTE
.rd1 <- object@rd1[Year %in% selectYears]
.rd1total <- object@rd1total[Year %in% selectYears]
return(new("RD1", header=object@header, footer=object@footer, rd1=.rd1, rd1total=.rd1total, content=object@content, region=object@region, protocol=object@protocol))
}
)
#' @export
setMethod("selectRegion", "RD1", function(object, selectRegion) {
Region_Code <- NULL # evoid NOTE
.rd1 <- object@rd1[Region_Code %in% selectRegion]
.rd1total <- object@rd1total[Region_Code %in% selectRegion]
return(new("RD1", header=object@header, footer=object@footer, rd1=.rd1, rd1total=.rd1total, content=object@content, region=object@region, protocol=object@protocol))
}
)
# validity method
#' @export
setValidity("RD1",
function(object) {
msg <- NULL
valid <- TRUE
rd1colnames <- c("Year","Region_Code","Region_Name","Age_Name","Total1","Male","Female","D_Total","D_Male","D_Female", "AgeLow")
if (!all(rd1colnames %in% colnames(object@rd1))) {
valid <- FALSE
msg <- c(msg, paste(c("ex1 must contain:",rd1colnames), collapse=" "))
}
if (valid) TRUE else msg
}
)
####
# Class for 'GENESIS-Tabelle: 12411-03-03-4'
#' @export
setClass("RE1",
slots=c(
header="vector", # file header
footer="vector", # file footer
re1="data.table", # exposure table
re1total="data.table", # exposure table total sums
content="character", # content
region="character", # region
protocol="character" # protocol version
)
)
# slot getters
#' @export
setMethod("header", "RE1", function(object) object@header)
#' @export
setMethod("footer", "RE1", function(object) object@footer)
#' @export
setMethod("re1", "RE1", function(object) object@re1)
#' @export
setMethod("re1total", "RE1", function(object) object@re1total)
#' @export
setMethod("content", "RE1", function(object) object@content)
#' @export
setMethod("region", "RE1", function(object) object@region)
#' @export
setMethod("protocol", "RE1", function(object) object@protocol)
# constructor
#' @export
RegExp1 <- function(header, footer, re1, re1total, content, region, protocol)
new("RE1", header=header, footer, re1=re1, re1total=re1total, content=content, region=region, protocol=protocol)
# methods
#' @export
setMethod("length", "RE1", function(x) dim(x@re1)[1])
#' @export
setMethod("show", "RE1",
function(object)
cat(class(object), "instance with length", length(object), "\n")
)
#' @export
setMethod("selectYears", "RE1", function(object, selectYears) {
Year <- NULL # evoid NOTE
.re1 <- object@re1[Year %in% selectYears]
.re1total <- object@re1total[Year %in% selectYears]
return(new("RE1", header=object@header, footer=object@footer, re1=.re1, re1total=.re1total, content=object@content, region=object@region, protocol=object@protocol))
}
)
#' @export
setMethod("selectRegion", "RE1", function(object, selectRegion) {
Region_Code <- NULL # evoid NOTE
.re1 <- object@re1[Region_Code %in% selectRegion]
.re1total <- object@re1total[Region_Code %in% selectRegion]
return(new("RE1", header=object@header, footer=object@footer, re1=.re1, re1total=.re1total, content=object@content, region=object@region, protocol=object@protocol))
}
)
# validity method
#' @export
setValidity("RE1",
function(object) {
msg <- NULL
valid <- TRUE
re1colnames <-c("Region_Code","Region_Name","Age_Name","Total1","Male","Female","D_Total","D_Male","D_Female",
"A_Total","A_Male","A_Female", "Year", "AgeLow")
if (!all(re1colnames %in% colnames(object@re1))) {
valid <- FALSE
msg <- c(msg, paste(c("ex1 must contain:",re1colnames), collapse=" "))
}
if (valid) TRUE else msg
}
)
####
# read all information from 'GENESIS-Tabelle: 12613-02-02-4'
# Statistische Ämter des Bundes und der Länder, Deutschland, 2019
#' @export
readRegDeath <- function(infile)
{
bb <- scan(infile, what=character(), blank.lines.skip = FALSE, encoding="ANSI", sep="\n")
h2 <- grep(";Insgesamt;m\u00e4nnlich",bb)
f1 <- grep("__________",bb)
f2 <- length(bb)
header <- bb[1:h2]
footer <- bb[f1:f2]
rdft <- data.table::fread(infile, skip=h2, nrows=(f1-h2-1))
data.table::setnames(rdft, c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10"),
c("Year","Region_Code","Region_Name","Age_Name","Total1","Male","Female","D_Total","D_Male","D_Female"))
# extract the total sums
Age_Name <- NULL # to prevent a note
rd1total <- rdft[Age_Name=="Insgesamt"]
# merge the lower age limit
age_code1 <- data.table::data.table(Age_Name=c("unter 1 Jahr","1 bis unter 5 Jahre",
"5 bis unter 10 Jahre","10 bis unter 15 Jahre",
"15 bis unter 20 Jahre","20 bis unter 25 Jahre",
"25 bis unter 30 Jahre","30 bis unter 35 Jahre",
"35 bis unter 40 Jahre","40 bis unter 45 Jahre",
"45 bis unter 50 Jahre","50 bis unter 55 Jahre",
"55 bis unter 60 Jahre","60 bis unter 65 Jahre",
"65 bis unter 70 Jahre","70 bis unter 75 Jahre",
"75 bis unter 80 Jahre","80 bis unter 85 Jahre",
"85 Jahre und mehr"),
AgeLow=c(0,1,seq(5,85,by=5)))
rdft <- merge(rdft,age_code1,by="Age_Name")
return(new("RD1", header=header, footer=footer, rd1=rdft, rd1total = rd1total, content="GENESIS-Tabelle: 12613-02-02-4", region="Germany", protocol="unknown"))
}
# read all information from 'GENESIS-Tabelle: 12613-02-02-4'
# Statistische Ämter des Bundes und der Länder, Deutschland, 2019
#' @export
readRegExp <- function(infile)
{
bb <- scan(infile, what=character(), blank.lines.skip = FALSE, encoding="ANSI", sep="\n")
h2 <- grep(";Insgesamt;m\u00e4nnlich",bb)
f1 <- grep("__________",bb)
f2 <- length(bb)
header <- bb[1:h2]
footer <- bb[f1:f2]
rexpt <- data.table::fread(infile, skip=h2, nrows=(f1-h2-1))
data.table::setnames(rexpt, c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12"),
c("Region_Code","Region_Name","Age_Name","Total1","Male","Female","D_Total","D_Male","D_Female",
"A_Total","A_Male","A_Female"))
# add the year
Year <- NULL # avoid NOTE
rexpt[, Year:=2016]
Age_Name <- NULL # to prevent a note
# extract the total sums
re1total <- rexpt[Age_Name=="Insgesamt"]
# merge the lower age limit
age_code2 <- data.table::data.table(Age_Name=c("unter 3 Jahre","3 bis unter 6 Jahre",
"6 bis unter 10 Jahre","10 bis unter 15 Jahre",
"15 bis unter 18 Jahre","18 bis unter 20 Jahre",
"20 bis unter 25 Jahre",
"25 bis unter 30 Jahre","30 bis unter 35 Jahre",
"35 bis unter 40 Jahre","40 bis unter 45 Jahre",
"45 bis unter 50 Jahre","50 bis unter 55 Jahre",
"55 bis unter 60 Jahre","60 bis unter 65 Jahre",
"65 bis unter 70 Jahre","70 bis unter 75 Jahre",
"75 bis unter 80 Jahre","80 bis unter 85 Jahre",
"85 bis unter 90 Jahre","90 Jahre und mehr"),
AgeLow=c(0,3,6,10,15,18,seq(20,90,by=5)))
rexpt <- merge(rexpt, age_code2 ,by="Age_Name")
return(new("RE1", header=header, footer=footer, re1=rexpt, re1total=re1total, content="GENESIS-Tabelle: 12613-02-02-4", region="Germany", protocol="unknown"))
}
####