## nasjonalitet og kjønn
nordLand <- c("Norge", "Danmark", "Finland", "Sverige", "Island")
## Data kilder
nasDT <- lok2018dt1
nasDT[!is.na(fodelandMor) , nordiskMor := ifelse(fodelandMor %in% nordLand, 1L, 0L)]
nasDT[!is.na(fodelandFar) , nordiskFar := ifelse(fodelandFar %in% nordLand, 1L, 0L)]
## nordisk barn
## Minst en av foreldrene er født i de nordiske landene
## nasDT[, .N, by=.(nordiskFar)]
nordBarn <- nasDT[, {mor = ifelse(is.na(nordiskMor), 0, nordiskMor);
far = ifelse(is.na(nordiskFar), 0, nordiskFar);
barn = mor + far;
nordiskBarn = ifelse(is.na(nordiskMor) & is.na(nordiskFar), NA, barn);
list(barn = barn,
nordiskBarn = nordiskBarn,
mor = nordiskMor,
far = nordiskFar,
kjonn = Kjonn,
PasientID = PasientID
)}]
nordBarn[.(nordiskBarn = 1:2, to = 1), on = "nordiskBarn", nordiskBarn := i.to]
# nordBarn[nordiskBarn %in% 1:2, nordiskBarn := 1]
# ukjent nasjonalitet
nordBarn[is.na(nordiskBarn), nordiskBarn := 3]
## Aggrigerer
nasAgg <- groupingsets(nordBarn,
j = .(
nordisk = length(which(nordiskBarn == 1)),
ikke = length(which(nordiskBarn == 0)),
ukjent = length(which(nordiskBarn == 3))
),
by = c("kjonn"),
sets = list(
c("kjonn"),
character(0)
))
## Totalt
nasAgg[is.na(kjonn), kjonn := "Totalt"]
nasAgg[, N := rowSums(nasAgg[, -1])]
## Prosent
nasAgg[, `:=`(
npro = round(nordisk / N * 100, digits = 1),
ipro = round(ikke / N * 100, digits = 1),
upro = round(ukjent / N * 100, digits = 1)
),
by = .(kjonn)]
## Mix antall og prosent
nasAgg[, `:=`(
nord_N = sprintf("%s (%0.1f%%)", nordisk, npro),
ikke_N = sprintf("%s (%0.1f%%)", ikke, ipro),
ukjent_N = sprintf("%s (%0.1f%%)", ukjent, upro)
),
by = .(kjonn)]
## Hvis 0 så byttes med strek
nasAgg[nordisk == 0, nord_N := "-"]
nasAgg[ikke == 0, ikke_N := "-"]
nasAgg[ukjent == 0, ukjent_N := "-"]
## Beholder det relevante
bortVar <- c("nordisk", "ikke", "ukjent", "npro", "ipro", "upro")
nasAgg[,(bortVar) := NULL ]
## ## bytt NA med strekk
## for (j in seq_len(ncol(nasAgg))){
## set(nasAgg, which(is.na(nasAgg[[j]])), j = j, value = " -")
## }
## Sjekk antall kolonner fordi ikke alle har annen nasjonaltitet
colN <- ncol(nasAgg)
colNavn <- names(nasAgg)
kol1 <- grep("kjonn", colNavn, value = T)
koln <- grep("^N", colNavn, value = T)
kol2 <- grep("nord", colNavn, value = T)
kol3 <- grep("ikke", colNavn, value = T)
kol4 <- grep("ukjent", colNavn, value = T)
barnWt <- nasAgg
## Kjønn skal være fleretall
barnWt[.(kjonn = c("Gutt", "Jente"), to = c("Gutter", "Jenter")), on = "kjonn", kjonn := i.to]
if (colN == 5) {
## reorder columns
setcolorder(barnWt, c(kol1, koln, kol2, kol3, kol4))
## legger riktig colnavn
setnames(barnWt, names(barnWt), c("kjonn", "N", "Nordisk", "Ikke Nordisk", "Ukjent"))
}
if (colN == 4){
## reorder columns
setcolorder(barnWt, c(kol1, koln, kol2, kol3))
## legger riktig colnavn
setnames(barnWt, names(barnWt), c("kjonn", "N", "Nordisk", "Ikke Nordisk"))
}
if (colN == 3){
## reorder columns
setcolorder(barnWt, c(kol1, koln, kol2))
## legger riktig colnavn
setnames(barnWt, names(barnWt), c("kjonn","N", "Nordisk"))
}
setnames(barnWt, "kjonn", "")
barnWt[, N := as.character(N)] #problem med tall vises som scientific format
## utTabell <- tabHux(barnWt, total = TRUE, del = c(.1, .15, .22, .22, .22), autoformat = TRUE)
utTabell <- tabFunx(barnWt, total = TRUE, navn = "n (%)",
del = c(.1, .15, .22, .22, .22), mix = 3:5, center = 3)