Prikking av foretak og avrunding eller prikking av personer
SdcForetakPerson.RdPrikking av foretak og avrunding eller prikking av personer.
Sett parameteren allowTotal til TRUE for at kategorier innen (within) foretak skal prikkes samtidig som totalverdier over disse grupperingene tillates publisert.
Usage
SdcForetakPerson(
data,
between = NULL,
within = NULL,
by = NULL,
roundBase = 3,
maxN = NULL,
protectZeros = FALSE,
secondaryZeros = FALSE,
freqVar = NULL,
sector = lower_match(data, "sektor"),
private = "Privat",
nace = c("nar*", "NACE*", "nace*"),
nace00 = "00",
nace00primary = FALSE,
frtk = lower_match(data, "frtk_id_ssb"),
virk = lower_match(data, "virk_id_ssb"),
unik = lower_match(data, "unik_id"),
makeunik = TRUE,
removeZeros = !protectZeros,
preAggregate = TRUE,
output = NULL,
decimal = FALSE,
freqDec = "freqDec*",
nRep = 3,
digitsA = 9,
digitsB = 5,
allowTotal = FALSE,
til0 = TRUE,
iWait = Inf,
k1 = NULL,
k2 = 2 * k1,
pPercent = NULL,
use_freqVar = FALSE,
decimal_warning = TRUE
)Arguments
- data
Datasett som data frame
- between
Variabler som grupperer foretak for prikking
- within
Ytterligere variabler innen foretak som brukes til avrunding eller prikking av personer
- by
Tid eller andre variabler som deler datasettet. Metoden kjøres på hver del og resultatet settes sammen.
- roundBase
Base for avrunding
- maxN
Max-verdi for primærprikking av personer. Ikke-NULL verdi betyr prikking istedenfor avrunding.
- protectZeros
Suppression parameter. Empty cells (count=0) are set as primary suppressed When TRUE.
- secondaryZeros
Suppression parameter.
- freqVar
A single variable holding counts (name or number) or NULL in the case of micro data (then variable named
"freq"will be generated )- sector
Sektor-variabel som inneholder Privat-koden (se parameter
"private").- private
Privat-koden
- nace
between-variabel med nace-kode eller koding (starter med) som leter etter slik variabel (
nacekan settes tilNULL)- nace00
nace-koden som foretrekkes til sekundærprikking (
nace00kan settes tilNULL)- nace00primary
Ved FALSE utelates nace00-koden (se over) fra primærprikking
- frtk
foretak variabel
- virk
virksomhet variabel
- unik
unik variabel
- makeunik
Unik variabel genereres ved TRUE ellers antas det at den finnes
- removeZeros
When TRUE, rows with zero count will be removed from the data within the algorithm. Default er at parameteren er motsatt av
protectZeros. Altså 0-er i data fjernes når 0-er ikke skal prikkes. Parameteren har betydning for telling av antall foretak bak et tall.- preAggregate
Input til
GaussSuppressionFromData. Parameteren er med her for testing og sammenlikning av resultater.- output
Ved avrunding kan ulike type output velges. Enten "rounded" (samme som NULL) eller "suppressed" (liste med begge hvis noe annet). Her kan det bli endring.
- decimal
Ved TRUE returneres indre celle-data med desimaltall. Dette kan fungere som input seinere (se nedenfor). Når, i tillegg,
maxNerNULL(default), er det mulig å spesifiserebetweensom en formel (se eksempel).Ved
decimalsom en data-frame antas at dette er indre celle-data med desimaltall. Prikking vil baseres på aggregering av disse.- freqDec
Navn på variabel(er) med desimaltall eller koding (starter med). Brukes når
decimaler en data-frame.- nRep
Antall desimaltallsvariabler,
GaussSuppressDecparameter.- digitsA
GaussSuppressDecparameter (9 er vanligvis ok)- digitsB
SuppressionFromDecimalsparameter (5 er ok når nRep=3)- allowTotal
Når TRUE, ingen prikking når alle within-variabler er
"Total".- til0
Når TRUE: Når ikke-prikket tall som følge av
allowTotal=TRUEer avrundet til 0 blir prikking av undergrupper av denne opphevet og erstattet med 0.- iWait
Minimum antall sekunder mellom hver gang det skrives ut ekstra informasjon fra prikkerutinen.
- k1
Parameter for dominansregel. Primærprikking når ett privat foretak har mer enn k1% av antall personer i den aktuelle tabellcellen.
- k2
Parameter for dominansregel. Primærprikking når to private foretak har mer enn k2% av antall personer i den aktuelle tabellcellen.
- pPercent
Parameter for p%-regel som er alternativ til dominansregel. Dersom denne spesifiseres, ignoreres k1 og k2.
- use_freqVar
GaussSuppressDecparameter. TRUE betyr at desimaltallene er syntetiske frekvenstall. Ved FALSE (default) varierer desimaltallene rundt 0.- decimal_warning
Når TRUE: Det sjekkes om aggregerte frekvenser fra desimaldata-input samsvarer med frekvenser beregnet fra data-input (variabelen "original" i output fra
PLSroundingSuppressed. Ved avvik kommer warning og det skrives ut noen rader. Begge datasettene kan sees ved å endre parameterenoutput(se over).
Details
Default parameterverdier der funksjonen lower_match brukes betyr at default er første variabelnavn i data
som matcher når det ikke tas hensyn til små eller store bokstaver. Dette betyr, for eksempel, at parameteren frtk
ikke må bli spesifisert av brukeren hvis variabelnavnet i inputdata er "frtk_id_ssb" eller "FRTK_ID_SSB".
Det kan også være "frtk_id_SSB" om man vil.
Examples
prikkeVarA <- c("arb_fylke", "ARB_ARBKOMM", "nar8", "sektor")
prikkeVarB <- c("arb_fylke", "ARB_ARBKOMM", "nar17")
z <- SdcData("syssel27")
SdcForetakPerson(z, between = prikkeVarA)
#> [preAggregate 27*14->21*7]
#> [extraAggregate 21*7->10*7] Checking .....
#> GaussSuppression_none: ..............................
#> [aggregate for PLSroundingSuppressed 27*14->10*5]
#> ARB_ARBKOMM sektor original rounded difference roundedSuppressed
#> 1 Total Total 27 28 1 28
#> 2 Total 45-82 6 6 0 6
#> 3 Total 84 21 22 1 22
#> 4 Total Kommual 12 12 0 12
#> 5 Total Privat 6 6 0 6
#> 6 Total Statlig 9 10 1 10
#> 7 05 Total 17 18 1 18
#> 8 05 45-82 4 4 0 NA
#> 9 05 84 13 14 1 NA
#> 10 05 Kommual 9 9 0 9
#> 11 05 Privat 4 4 0 NA
#> 12 05 Statlig 4 5 1 NA
#> 13 18 Total 10 10 0 10
#> 14 18 45-82 2 2 0 NA
#> 15 18 84 8 8 0 NA
#> 16 18 Kommual 3 3 0 3
#> 17 18 Privat 2 2 0 NA
#> 18 18 Statlig 5 5 0 NA
#> 19 0518 Total 5 6 1 6
#> 20 0518 45-82 0 0 0 0
#> 21 0518 84 5 6 1 6
#> 22 0518 Kommual 3 3 0 3
#> 23 0518 Privat 0 0 0 0
#> 24 0518 Statlig 2 3 1 3
#> 25 0531 Total 12 12 0 12
#> 26 0531 45-82 4 4 0 NA
#> 27 0531 84 8 8 0 NA
#> 28 0531 Kommual 6 6 0 6
#> 29 0531 Privat 4 4 0 NA
#> 30 0531 Statlig 2 2 0 NA
#> 31 1821 Total 4 4 0 4
#> 32 1821 45-82 0 0 0 0
#> 33 1821 84 4 4 0 4
#> 34 1821 Kommual 2 2 0 NA
#> 35 1821 Privat 0 0 0 0
#> 36 1821 Statlig 2 2 0 NA
#> 37 1822 Total 6 6 0 6
#> 38 1822 45-82 2 2 0 NA
#> 39 1822 84 4 4 0 NA
#> 40 1822 Kommual 1 1 0 NA
#> 41 1822 Privat 2 2 0 NA
#> 42 1822 Statlig 3 3 0 3
SdcForetakPerson(z, between = prikkeVarA, output = "suppressed")
#> [preAggregate 27*14->21*7]
#> [extraAggregate 21*7->10*7] Checking .....
#> GaussSuppression_none: ..............................
#> ARB_ARBKOMM sektor freq nPrivat nOff narWeight primary suppressed prikk
#> 1 Total Total 27 5 13 27 FALSE FALSE 0
#> 2 Total 45-82 6 5 0 6 FALSE FALSE 0
#> 3 Total 84 21 0 13 21 FALSE FALSE 0
#> 4 Total Kommual 12 0 9 12 FALSE FALSE 0
#> 5 Total Privat 6 5 0 6 FALSE FALSE 0
#> 6 Total Statlig 9 0 4 9 FALSE FALSE 0
#> 7 05 Total 17 3 9 17 FALSE FALSE 0
#> 8 05 45-82 4 3 0 4 FALSE TRUE 1
#> 9 05 84 13 0 9 13 FALSE TRUE 1
#> 10 05 Kommual 9 0 7 9 FALSE FALSE 0
#> 11 05 Privat 4 3 0 4 FALSE TRUE 1
#> 12 05 Statlig 4 0 2 4 FALSE TRUE 1
#> 13 18 Total 10 2 5 10 FALSE FALSE 0
#> 14 18 45-82 2 2 0 2 TRUE TRUE 1
#> 15 18 84 8 0 5 8 FALSE TRUE 1
#> 16 18 Kommual 3 0 2 3 FALSE FALSE 0
#> 17 18 Privat 2 2 0 2 TRUE TRUE 1
#> 18 18 Statlig 5 0 3 5 FALSE TRUE 1
#> 19 0518 Total 5 0 5 5 FALSE FALSE 0
#> 20 0518 45-82 0 0 0 0 FALSE FALSE 0
#> 21 0518 84 5 0 5 5 FALSE FALSE 0
#> 22 0518 Kommual 3 0 3 3 FALSE FALSE 0
#> 23 0518 Privat 0 0 0 0 FALSE FALSE 0
#> 24 0518 Statlig 2 0 2 2 FALSE FALSE 0
#> 25 0531 Total 12 3 6 12 FALSE FALSE 0
#> 26 0531 45-82 4 3 0 4 FALSE TRUE 1
#> 27 0531 84 8 0 6 8 FALSE TRUE 1
#> 28 0531 Kommual 6 0 4 6 FALSE FALSE 0
#> 29 0531 Privat 4 3 0 4 FALSE TRUE 1
#> 30 0531 Statlig 2 0 2 2 FALSE TRUE 1
#> 31 1821 Total 4 0 3 4 FALSE FALSE 0
#> 32 1821 45-82 0 0 0 0 FALSE FALSE 0
#> 33 1821 84 4 0 3 4 FALSE FALSE 0
#> 34 1821 Kommual 2 0 1 2 FALSE TRUE 1
#> 35 1821 Privat 0 0 0 0 FALSE FALSE 0
#> 36 1821 Statlig 2 0 2 2 FALSE TRUE 1
#> 37 1822 Total 6 2 2 6 FALSE FALSE 0
#> 38 1822 45-82 2 2 0 2 TRUE TRUE 1
#> 39 1822 84 4 0 2 4 FALSE TRUE 1
#> 40 1822 Kommual 1 0 1 1 FALSE TRUE 1
#> 41 1822 Privat 2 2 0 2 TRUE TRUE 1
#> 42 1822 Statlig 3 0 1 3 FALSE FALSE 0
SdcForetakPerson(z, between = prikkeVarB, within = "PERS_KJOENN")
#> [preAggregate 27*14->21*7]
#> [extraAggregate 21*7->6*6] Checking .....
#> GaussSuppression_none: ................
#> [aggregate for PLSroundingSuppressed 27*14->12*5]
#> ARB_ARBKOMM nar17 PERS_KJOENN original rounded difference roundedSuppressed
#> 1 Total Total Total 27 27 0 27
#> 2 Total Total 1 12 12 0 12
#> 3 Total Total 2 15 15 0 15
#> 4 Total 58-63 Total 6 6 0 6
#> 5 Total 58-63 1 3 3 0 3
#> 6 Total 58-63 2 3 3 0 3
#> 7 Total 84 Total 21 21 0 21
#> 8 Total 84 1 9 9 0 9
#> 9 Total 84 2 12 12 0 12
#> 10 05 Total Total 17 17 0 17
#> 11 05 Total 1 6 5 -1 5
#> 12 05 Total 2 11 12 1 12
#> 13 05 58-63 Total 4 5 1 NA
#> 14 05 58-63 1 2 2 0 NA
#> 15 05 58-63 2 2 3 1 NA
#> 16 05 84 Total 13 12 -1 NA
#> 17 05 84 1 4 3 -1 NA
#> 18 05 84 2 9 9 0 NA
#> 19 18 Total Total 10 10 0 10
#> 20 18 Total 1 6 7 1 7
#> 21 18 Total 2 4 3 -1 3
#> 22 18 58-63 Total 2 1 -1 NA
#> 23 18 58-63 1 1 1 0 NA
#> 24 18 58-63 2 1 0 -1 NA
#> 25 18 84 Total 8 9 1 NA
#> 26 18 84 1 5 6 1 NA
#> 27 18 84 2 3 3 0 NA
#> 28 0518 Total Total 5 4 -1 4
#> 29 0518 Total 1 1 0 -1 0
#> 30 0518 Total 2 4 4 0 4
#> 31 0518 58-63 Total 0 0 0 0
#> 32 0518 58-63 1 0 0 0 0
#> 33 0518 58-63 2 0 0 0 0
#> 34 0518 84 Total 5 4 -1 4
#> 35 0518 84 1 1 0 -1 0
#> 36 0518 84 2 4 4 0 4
#> 37 0531 Total Total 12 13 1 13
#> 38 0531 Total 1 5 5 0 5
#> 39 0531 Total 2 7 8 1 8
#> 40 0531 58-63 Total 4 5 1 NA
#> 41 0531 58-63 1 2 2 0 NA
#> 42 0531 58-63 2 2 3 1 NA
#> 43 0531 84 Total 8 8 0 NA
#> 44 0531 84 1 3 3 0 NA
#> 45 0531 84 2 5 5 0 NA
#> 46 1821 Total Total 4 6 2 6
#> 47 1821 Total 1 2 3 1 3
#> 48 1821 Total 2 2 3 1 3
#> 49 1821 58-63 Total 0 0 0 0
#> 50 1821 58-63 1 0 0 0 0
#> 51 1821 58-63 2 0 0 0 0
#> 52 1821 84 Total 4 6 2 6
#> 53 1821 84 1 2 3 1 3
#> 54 1821 84 2 2 3 1 3
#> 55 1822 Total Total 6 4 -2 4
#> 56 1822 Total 1 4 4 0 4
#> 57 1822 Total 2 2 0 -2 0
#> 58 1822 58-63 Total 2 1 -1 NA
#> 59 1822 58-63 1 1 1 0 NA
#> 60 1822 58-63 2 1 0 -1 NA
#> 61 1822 84 Total 4 3 -1 NA
#> 62 1822 84 1 3 3 0 NA
#> 63 1822 84 2 1 0 -1 NA
SdcForetakPerson(z, between = prikkeVarA, maxN = 2)
#> [preAggregate 27*14->21*7]
#> [extraAggregate 21*7->10*7] Checking .....
#> GaussSuppression_anySumNOTprimary: .........................
#> ARB_ARBKOMM sektor freq nPrivat nOff prikket primary suppressed
#> 1 Total Total 27 5 13 27 0 0
#> 2 Total 45-82 6 5 0 6 0 0
#> 3 Total 84 21 0 13 21 0 0
#> 4 Total Kommual 12 0 9 12 0 0
#> 5 Total Privat 6 5 0 6 0 0
#> 6 Total Statlig 9 0 4 9 0 0
#> 7 05 Total 17 3 9 17 0 0
#> 8 05 45-82 4 3 0 NA 0 1
#> 9 05 84 13 0 9 NA 0 1
#> 10 05 Kommual 9 0 7 9 0 0
#> 11 05 Privat 4 3 0 NA 0 1
#> 12 05 Statlig 4 0 2 NA 0 1
#> 13 18 Total 10 2 5 10 0 0
#> 14 18 45-82 2 2 0 NA 1 1
#> 15 18 84 8 0 5 NA 0 1
#> 16 18 Kommual 3 0 2 3 0 0
#> 17 18 Privat 2 2 0 NA 1 1
#> 18 18 Statlig 5 0 3 NA 0 1
#> 19 0518 Total 5 0 5 5 0 0
#> 20 0518 45-82 0 0 0 0 0 0
#> 21 0518 84 5 0 5 5 0 0
#> 22 0518 Kommual 3 0 3 NA 0 1
#> 23 0518 Privat 0 0 0 0 0 0
#> 24 0518 Statlig 2 0 2 NA 1 1
#> 25 0531 Total 12 3 6 12 0 0
#> 26 0531 45-82 4 3 0 NA 0 1
#> 27 0531 84 8 0 6 NA 0 1
#> 28 0531 Kommual 6 0 4 NA 0 1
#> 29 0531 Privat 4 3 0 NA 0 1
#> 30 0531 Statlig 2 0 2 NA 1 1
#> 31 1821 Total 4 0 3 4 0 0
#> 32 1821 45-82 0 0 0 0 0 0
#> 33 1821 84 4 0 3 4 0 0
#> 34 1821 Kommual 2 0 1 NA 1 1
#> 35 1821 Privat 0 0 0 0 0 0
#> 36 1821 Statlig 2 0 2 NA 1 1
#> 37 1822 Total 6 2 2 6 0 0
#> 38 1822 45-82 2 2 0 NA 1 1
#> 39 1822 84 4 0 2 NA 0 1
#> 40 1822 Kommual 1 0 1 NA 1 1
#> 41 1822 Privat 2 2 0 NA 1 1
#> 42 1822 Statlig 3 0 1 3 0 0
SdcForetakPerson(z, between = prikkeVarA, maxN = 2, decimal = TRUE)
#> [preAggregate 27*14->21*7]
#> [extraAggregate 21*7->10*7] Checking .....
#> GaussSuppression_anySumNOTprimary: .........................
#> arb_fylke ARB_ARBKOMM nar8 sektor freq nPrivat nOff prikk freqDec1
#> 1 05 0518 84 Kommual 3 0 3 1 -0.5886639
#> 2 05 0518 84 Statlig 2 0 2 1 0.5886639
#> 3 05 0531 84 Kommual 6 0 4 1 0.5886639
#> 4 05 0531 45-82 Privat 4 3 0 1 -0.4777813
#> 5 05 0531 84 Statlig 2 0 2 1 -0.1108827
#> 6 18 1821 84 Kommual 2 0 1 1 0.4777813
#> 7 18 1821 84 Statlig 2 0 2 1 -0.4777813
#> 8 18 1822 84 Kommual 1 0 1 1 -0.4777813
#> 9 18 1822 45-82 Privat 2 2 0 1 0.4777813
#> 10 18 1822 84 Statlig 3 0 1 0 0.0000000
#> freqDec2 freqDec3
#> 1 -0.6944088 0.1863865
#> 2 0.6944088 -0.1863865
#> 3 0.6944088 -0.1863865
#> 4 -0.3554562 0.6170217
#> 5 -0.3389526 -0.4306352
#> 6 0.3554562 -0.6170217
#> 7 -0.3554562 0.6170217
#> 8 -0.3554562 0.6170217
#> 9 0.3554562 -0.6170217
#> 10 0.0000000 0.0000000
SdcForetakPerson(z, between = prikkeVarB, within = "PERS_KJOENN", maxN = 2, decimal = TRUE)
#> [preAggregate 27*14->24*8]
#> [extraAggregate 24*8->12*7] Checking .....
#> GaussSuppression_anySumNOTprimary: .....................................
#> arb_fylke ARB_ARBKOMM nar17 PERS_KJOENN freq nPrivat nOff prikk freqDec1
#> 1 05 0518 84 1 1 0 5 1 0.47320555
#> 2 05 0518 84 2 4 0 5 1 -0.47320555
#> 3 05 0531 58-63 1 2 3 0 1 -0.47320555
#> 4 05 0531 58-63 2 2 3 0 1 0.80867619
#> 5 05 0531 84 1 3 0 6 0 0.00000000
#> 6 05 0531 84 2 5 0 6 1 -0.33547064
#> 7 18 1821 84 1 2 0 3 1 0.03542413
#> 8 18 1821 84 2 2 0 3 1 -0.03542413
#> 9 18 1822 58-63 1 1 2 0 1 0.47320555
#> 10 18 1822 58-63 2 1 2 0 1 -0.80867619
#> 11 18 1822 84 1 3 0 2 1 -0.50862968
#> 12 18 1822 84 2 1 0 2 1 0.84410033
#> freqDec2 freqDec3
#> 1 -0.2562857 -0.2446012
#> 2 0.2562857 0.2446012
#> 3 0.2562857 0.2446012
#> 4 0.7166489 0.6759345
#> 5 0.0000000 0.0000000
#> 6 -0.9729346 -0.9205357
#> 7 -0.4780926 -0.5603770
#> 8 0.4780926 0.5603770
#> 9 -0.2562857 -0.2446012
#> 10 -0.7166489 -0.6759345
#> 11 0.7343783 0.8049782
#> 12 0.2385564 0.1155575
z100 <- SdcData("syssel100")
out <- SdcForetakPerson(z100, between = prikkeVarB, within = c("PERS_KJOENN", "alder6"))
#> [preAggregate 100*14->56*7]
#> [extraAggregate 56*7->15*6] Checking .....
#> GaussSuppression_none: ................................
#> [aggregate for PLSroundingSuppressed 100*14->57*6]
head(out)
#> ARB_ARBKOMM nar17 PERS_KJOENN alder6 original rounded difference
#> 1 Total Total Total Total 100 99 -1
#> 2 Total Total Total 15-19 5 3 -2
#> 3 Total Total Total 20-24 5 3 -2
#> 4 Total Total Total 25-39 25 27 2
#> 5 Total Total Total 40-54 41 40 -1
#> 6 Total Total Total 55-66 20 20 0
#> roundedSuppressed
#> 1 99
#> 2 3
#> 3 3
#> 4 27
#> 5 40
#> 6 20
tail(out)
#> ARB_ARBKOMM nar17 PERS_KJOENN alder6 original rounded difference
#> 730 1822 85 2 15-19 0 0 0
#> 731 1822 85 2 20-24 0 0 0
#> 732 1822 85 2 25-39 0 0 0
#> 733 1822 85 2 40-54 3 3 0
#> 734 1822 85 2 55-66 0 0 0
#> 735 1822 85 2 67-74 0 0 0
#> roundedSuppressed
#> 730 0
#> 731 0
#> 732 0
#> 733 3
#> 734 0
#> 735 0
# Bruke av dominansregler
outD <- SdcForetakPerson(z100, between = prikkeVarB, within = c("PERS_KJOENN", "alder6"),
k1 = 40, k2 = 50, output = "suppressed")
#> [preAggregate 100*14->56*7]
#> [extraAggregate 56*7->15*6] Checking .....
#> GaussSuppression_none: ..........................
outD
#> ARB_ARBKOMM nar17 freq nPrivat nOff dominance1 dominance2 narWeight primary
#> 1 Total Total 100 22 20 5.000000 3.000000 100 FALSE
#> 2 Total 49-53 22 15 1 13.636364 13.636364 22 FALSE
#> 3 Total 58-63 7 5 0 28.571429 28.571429 7 TRUE
#> 4 Total 84 32 0 16 0.000000 0.000000 32 FALSE
#> 5 Total 85 39 5 6 2.564103 2.564103 39 FALSE
#> 6 05 Total 67 15 11 4.477612 4.477612 67 FALSE
#> 7 05 49-53 14 10 1 21.428571 14.285714 14 FALSE
#> 8 05 58-63 5 3 0 40.000000 40.000000 5 TRUE
#> 9 05 84 20 0 9 0.000000 0.000000 20 FALSE
#> 10 05 85 28 4 3 3.571429 3.571429 28 FALSE
#> 11 18 Total 33 9 10 6.060606 6.060606 33 FALSE
#> 12 18 49-53 8 7 0 25.000000 12.500000 8 FALSE
#> 13 18 58-63 2 2 0 50.000000 50.000000 2 TRUE
#> 14 18 84 12 0 8 0.000000 0.000000 12 FALSE
#> 15 18 85 11 1 3 9.090909 0.000000 11 FALSE
#> 16 0518 Total 21 6 6 9.523810 4.761905 21 FALSE
#> 17 0518 49-53 6 6 0 16.666667 16.666667 6 FALSE
#> 18 0518 58-63 1 1 0 100.000000 0.000000 1 TRUE
#> 19 0518 84 6 0 5 0.000000 0.000000 6 FALSE
#> 20 0518 85 8 0 2 0.000000 0.000000 8 FALSE
#> 21 0531 Total 46 10 8 6.521739 4.347826 46 FALSE
#> 22 0531 49-53 8 4 1 37.500000 25.000000 8 TRUE
#> 23 0531 58-63 4 3 0 50.000000 25.000000 4 TRUE
#> 24 0531 84 14 0 6 0.000000 0.000000 14 FALSE
#> 25 0531 85 20 4 2 5.000000 5.000000 20 FALSE
#> 26 1821 Total 14 3 6 7.142857 7.142857 14 FALSE
#> 27 1821 49-53 3 3 0 33.333333 33.333333 3 TRUE
#> 28 1821 58-63 0 0 0 NaN NaN 0 FALSE
#> 29 1821 84 6 0 4 0.000000 0.000000 6 FALSE
#> 30 1821 85 5 0 2 0.000000 0.000000 5 FALSE
#> 31 1822 Total 19 6 5 10.526316 10.526316 19 FALSE
#> 32 1822 49-53 5 4 0 40.000000 20.000000 5 TRUE
#> 33 1822 58-63 2 2 0 50.000000 50.000000 2 TRUE
#> 34 1822 84 6 0 4 0.000000 0.000000 6 FALSE
#> 35 1822 85 6 1 2 16.666667 0.000000 6 FALSE
#> suppressed prikk
#> 1 FALSE 0
#> 2 TRUE 1
#> 3 TRUE 1
#> 4 FALSE 0
#> 5 FALSE 0
#> 6 FALSE 0
#> 7 TRUE 1
#> 8 TRUE 1
#> 9 FALSE 0
#> 10 FALSE 0
#> 11 FALSE 0
#> 12 TRUE 1
#> 13 TRUE 1
#> 14 FALSE 0
#> 15 FALSE 0
#> 16 FALSE 0
#> 17 TRUE 1
#> 18 TRUE 1
#> 19 FALSE 0
#> 20 FALSE 0
#> 21 FALSE 0
#> 22 TRUE 1
#> 23 TRUE 1
#> 24 FALSE 0
#> 25 FALSE 0
#> 26 FALSE 0
#> 27 TRUE 1
#> 28 FALSE 0
#> 29 FALSE 0
#> 30 TRUE 1
#> 31 FALSE 0
#> 32 TRUE 1
#> 33 TRUE 1
#> 34 FALSE 0
#> 35 TRUE 1
# Setter allowTotal = TRUE
outT <- SdcForetakPerson(z100, between = prikkeVarB, within = c("PERS_KJOENN", "alder6"),
allowTotal = TRUE)
#> [preAggregate 100*14->56*7]
#> [extraAggregate 56*7->15*6] Checking .....
#> GaussSuppression_none: ................................
#> [aggregate for PLSroundingSuppressed 100*14->57*6]
# Rader som har gitt ulik prikking
rader <- which(is.na(outT$roundedSuppressed) != is.na(out$roundedSuppressed))
out[rader, ]
#> ARB_ARBKOMM nar17 PERS_KJOENN alder6 original rounded difference
#> 127 05 49-53 Total Total 14 10 -4
#> 148 05 58-63 Total Total 5 3 -2
#> 232 18 49-53 Total Total 8 9 1
#> 253 18 58-63 Total Total 2 0 -2
#> 254 18 58-63 Total 15-19 0 0 0
#> 255 18 58-63 Total 20-24 0 0 0
#> 256 18 58-63 Total 25-39 1 0 -1
#> 257 18 58-63 Total 40-54 1 0 -1
#> 258 18 58-63 Total 55-66 0 0 0
#> 259 18 58-63 Total 67-74 0 0 0
#> 260 18 58-63 1 Total 1 0 -1
#> 261 18 58-63 1 15-19 0 0 0
#> 262 18 58-63 1 20-24 0 0 0
#> 263 18 58-63 1 25-39 0 0 0
#> 264 18 58-63 1 40-54 1 0 -1
#> 265 18 58-63 1 55-66 0 0 0
#> 266 18 58-63 1 67-74 0 0 0
#> 267 18 58-63 2 Total 1 0 -1
#> 268 18 58-63 2 15-19 0 0 0
#> 269 18 58-63 2 20-24 0 0 0
#> 270 18 58-63 2 25-39 1 0 -1
#> 271 18 58-63 2 40-54 0 0 0
#> 272 18 58-63 2 55-66 0 0 0
#> 273 18 58-63 2 67-74 0 0 0
#> 337 0518 49-53 Total Total 6 4 -2
#> 358 0518 58-63 Total Total 1 0 -1
#> 359 0518 58-63 Total 15-19 1 0 -1
#> 360 0518 58-63 Total 20-24 0 0 0
#> 361 0518 58-63 Total 25-39 0 0 0
#> 362 0518 58-63 Total 40-54 0 0 0
#> 363 0518 58-63 Total 55-66 0 0 0
#> 364 0518 58-63 Total 67-74 0 0 0
#> 365 0518 58-63 1 Total 0 0 0
#> 366 0518 58-63 1 15-19 0 0 0
#> 367 0518 58-63 1 20-24 0 0 0
#> 368 0518 58-63 1 25-39 0 0 0
#> 369 0518 58-63 1 40-54 0 0 0
#> 370 0518 58-63 1 55-66 0 0 0
#> 371 0518 58-63 1 67-74 0 0 0
#> 372 0518 58-63 2 Total 1 0 -1
#> 373 0518 58-63 2 15-19 1 0 -1
#> 374 0518 58-63 2 20-24 0 0 0
#> 375 0518 58-63 2 25-39 0 0 0
#> 376 0518 58-63 2 40-54 0 0 0
#> 377 0518 58-63 2 55-66 0 0 0
#> 378 0518 58-63 2 67-74 0 0 0
#> 652 1822 49-53 Total Total 5 6 1
#> 673 1822 58-63 Total Total 2 0 -2
#> 674 1822 58-63 Total 15-19 0 0 0
#> 675 1822 58-63 Total 20-24 0 0 0
#> 676 1822 58-63 Total 25-39 1 0 -1
#> 677 1822 58-63 Total 40-54 1 0 -1
#> 678 1822 58-63 Total 55-66 0 0 0
#> 679 1822 58-63 Total 67-74 0 0 0
#> 680 1822 58-63 1 Total 1 0 -1
#> 681 1822 58-63 1 15-19 0 0 0
#> 682 1822 58-63 1 20-24 0 0 0
#> 683 1822 58-63 1 25-39 0 0 0
#> 684 1822 58-63 1 40-54 1 0 -1
#> 685 1822 58-63 1 55-66 0 0 0
#> 686 1822 58-63 1 67-74 0 0 0
#> 687 1822 58-63 2 Total 1 0 -1
#> 688 1822 58-63 2 15-19 0 0 0
#> 689 1822 58-63 2 20-24 0 0 0
#> 690 1822 58-63 2 25-39 1 0 -1
#> 691 1822 58-63 2 40-54 0 0 0
#> 692 1822 58-63 2 55-66 0 0 0
#> 693 1822 58-63 2 67-74 0 0 0
#> roundedSuppressed
#> 127 NA
#> 148 NA
#> 232 NA
#> 253 NA
#> 254 NA
#> 255 NA
#> 256 NA
#> 257 NA
#> 258 NA
#> 259 NA
#> 260 NA
#> 261 NA
#> 262 NA
#> 263 NA
#> 264 NA
#> 265 NA
#> 266 NA
#> 267 NA
#> 268 NA
#> 269 NA
#> 270 NA
#> 271 NA
#> 272 NA
#> 273 NA
#> 337 NA
#> 358 NA
#> 359 NA
#> 360 NA
#> 361 NA
#> 362 NA
#> 363 NA
#> 364 NA
#> 365 NA
#> 366 NA
#> 367 NA
#> 368 NA
#> 369 NA
#> 370 NA
#> 371 NA
#> 372 NA
#> 373 NA
#> 374 NA
#> 375 NA
#> 376 NA
#> 377 NA
#> 378 NA
#> 652 NA
#> 673 NA
#> 674 NA
#> 675 NA
#> 676 NA
#> 677 NA
#> 678 NA
#> 679 NA
#> 680 NA
#> 681 NA
#> 682 NA
#> 683 NA
#> 684 NA
#> 685 NA
#> 686 NA
#> 687 NA
#> 688 NA
#> 689 NA
#> 690 NA
#> 691 NA
#> 692 NA
#> 693 NA
outT[rader, ]
#> ARB_ARBKOMM nar17 PERS_KJOENN alder6 original rounded difference
#> 127 05 49-53 Total Total 14 13 -1
#> 148 05 58-63 Total Total 5 3 -2
#> 232 18 49-53 Total Total 8 9 1
#> 253 18 58-63 Total Total 2 0 -2
#> 254 18 58-63 Total 15-19 0 0 0
#> 255 18 58-63 Total 20-24 0 0 0
#> 256 18 58-63 Total 25-39 1 0 -1
#> 257 18 58-63 Total 40-54 1 0 -1
#> 258 18 58-63 Total 55-66 0 0 0
#> 259 18 58-63 Total 67-74 0 0 0
#> 260 18 58-63 1 Total 1 0 -1
#> 261 18 58-63 1 15-19 0 0 0
#> 262 18 58-63 1 20-24 0 0 0
#> 263 18 58-63 1 25-39 0 0 0
#> 264 18 58-63 1 40-54 1 0 -1
#> 265 18 58-63 1 55-66 0 0 0
#> 266 18 58-63 1 67-74 0 0 0
#> 267 18 58-63 2 Total 1 0 -1
#> 268 18 58-63 2 15-19 0 0 0
#> 269 18 58-63 2 20-24 0 0 0
#> 270 18 58-63 2 25-39 1 0 -1
#> 271 18 58-63 2 40-54 0 0 0
#> 272 18 58-63 2 55-66 0 0 0
#> 273 18 58-63 2 67-74 0 0 0
#> 337 0518 49-53 Total Total 6 4 -2
#> 358 0518 58-63 Total Total 1 0 -1
#> 359 0518 58-63 Total 15-19 1 0 -1
#> 360 0518 58-63 Total 20-24 0 0 0
#> 361 0518 58-63 Total 25-39 0 0 0
#> 362 0518 58-63 Total 40-54 0 0 0
#> 363 0518 58-63 Total 55-66 0 0 0
#> 364 0518 58-63 Total 67-74 0 0 0
#> 365 0518 58-63 1 Total 0 0 0
#> 366 0518 58-63 1 15-19 0 0 0
#> 367 0518 58-63 1 20-24 0 0 0
#> 368 0518 58-63 1 25-39 0 0 0
#> 369 0518 58-63 1 40-54 0 0 0
#> 370 0518 58-63 1 55-66 0 0 0
#> 371 0518 58-63 1 67-74 0 0 0
#> 372 0518 58-63 2 Total 1 0 -1
#> 373 0518 58-63 2 15-19 1 0 -1
#> 374 0518 58-63 2 20-24 0 0 0
#> 375 0518 58-63 2 25-39 0 0 0
#> 376 0518 58-63 2 40-54 0 0 0
#> 377 0518 58-63 2 55-66 0 0 0
#> 378 0518 58-63 2 67-74 0 0 0
#> 652 1822 49-53 Total Total 5 6 1
#> 673 1822 58-63 Total Total 2 0 -2
#> 674 1822 58-63 Total 15-19 0 0 0
#> 675 1822 58-63 Total 20-24 0 0 0
#> 676 1822 58-63 Total 25-39 1 0 -1
#> 677 1822 58-63 Total 40-54 1 0 -1
#> 678 1822 58-63 Total 55-66 0 0 0
#> 679 1822 58-63 Total 67-74 0 0 0
#> 680 1822 58-63 1 Total 1 0 -1
#> 681 1822 58-63 1 15-19 0 0 0
#> 682 1822 58-63 1 20-24 0 0 0
#> 683 1822 58-63 1 25-39 0 0 0
#> 684 1822 58-63 1 40-54 1 0 -1
#> 685 1822 58-63 1 55-66 0 0 0
#> 686 1822 58-63 1 67-74 0 0 0
#> 687 1822 58-63 2 Total 1 0 -1
#> 688 1822 58-63 2 15-19 0 0 0
#> 689 1822 58-63 2 20-24 0 0 0
#> 690 1822 58-63 2 25-39 1 0 -1
#> 691 1822 58-63 2 40-54 0 0 0
#> 692 1822 58-63 2 55-66 0 0 0
#> 693 1822 58-63 2 67-74 0 0 0
#> roundedSuppressed
#> 127 13
#> 148 3
#> 232 9
#> 253 0
#> 254 0
#> 255 0
#> 256 0
#> 257 0
#> 258 0
#> 259 0
#> 260 0
#> 261 0
#> 262 0
#> 263 0
#> 264 0
#> 265 0
#> 266 0
#> 267 0
#> 268 0
#> 269 0
#> 270 0
#> 271 0
#> 272 0
#> 273 0
#> 337 4
#> 358 0
#> 359 0
#> 360 0
#> 361 0
#> 362 0
#> 363 0
#> 364 0
#> 365 0
#> 366 0
#> 367 0
#> 368 0
#> 369 0
#> 370 0
#> 371 0
#> 372 0
#> 373 0
#> 374 0
#> 375 0
#> 376 0
#> 377 0
#> 378 0
#> 652 6
#> 673 0
#> 674 0
#> 675 0
#> 676 0
#> 677 0
#> 678 0
#> 679 0
#> 680 0
#> 681 0
#> 682 0
#> 683 0
#> 684 0
#> 685 0
#> 686 0
#> 687 0
#> 688 0
#> 689 0
#> 690 0
#> 691 0
#> 692 0
#> 693 0
# Ser effekt av allowTotal ved bare prikking
outP <- SdcForetakPerson(z100, between = prikkeVarB, within = c("PERS_KJOENN", "alder6"), maxN = 1)
#> [preAggregate 100*14->83*9]
#> [extraAggregate 83*9->57*8] Checking .....
#> GaussSuppression_anySumNOTprimary: ..........................
outTP <- SdcForetakPerson(z100, between = prikkeVarB, within = c("PERS_KJOENN", "alder6"), maxN = 1,
allowTotal = TRUE)
#> [preAggregate 100*14->83*9]
#> [extraAggregate 83*9->57*8] Checking .....
#> GaussSuppression_anySumNOTprimary: ...........................
# Rader som har gitt ulik primærprikking
raderP <- which(outTP$primary != outP$primary)
outP[raderP, ] # Her ble allikevel prikking til slutt lik (suppressed)
#> ARB_ARBKOMM nar17 PERS_KJOENN alder6 freq nPrivat nOff prikket primary
#> 253 18 58-63 Total Total 2 2 0 NA 1
#> 673 1822 58-63 Total Total 2 2 0 NA 1
#> suppressed
#> 253 1
#> 673 1
outTP[raderP, ] # Dette pga. singleton-håndtering (1-ere som kan avsløres)
#> ARB_ARBKOMM nar17 PERS_KJOENN alder6 freq nPrivat nOff prikket primary
#> 253 18 58-63 Total Total 2 2 0 NA 0
#> 673 1822 58-63 Total Total 2 2 0 NA 0
#> suppressed
#> 253 1
#> 673 1
# Finner data desimaltall med mange variabler som tas hensyn til.
# Dessverre en warning som kan sees bort fra
# Kan unngaas med dataDec <- suppressWarnings(SdcForetakPerson(.....
prikkeVarC <- c("arb_fylke", "ARB_ARBKOMM", "nar8", "sektor", "nar17")
dataDec <- SdcForetakPerson(z100, between = prikkeVarC, nace = "nar8", decimal = TRUE)
#> [preAggregate 100*14->56*8]
#> Warning: Levelnames must be different in nar17, nar8
#> Warning: Settting addName to TRUE (overriding input)
#> [extraAggregate 56*8->26*8]
#> Warning: Levelnames must be different in nar17, nar8
#> Warning: Settting addName to TRUE (overriding input)
#> Checking .....
#> GaussSuppression_none: ..............................
# Bruker desimaltall som utgangspunkt for prikking
outA <- SdcForetakPerson(z100, between = prikkeVarA, decimal = dataDec)
#> [preAggregate 26*12->23*8]
#> GaussSuppression_none:
#> [aggregate for PLSroundingSuppressed 100*11->23*5]
outB <- SdcForetakPerson(z100, between = prikkeVarB, within = "PERS_KJOENN", decimal = dataDec)
#> [preAggregate 26*12->15*7]
#> GaussSuppression_none:
#> [aggregate for PLSroundingSuppressed 100*11->26*5]
# Desimaltall kan genereres med formel
dataDec2 <- SdcForetakPerson(z100, between =
~(arb_fylke + ARB_ARBKOMM) * nar8 * sektor + (arb_fylke + ARB_ARBKOMM) * nar17,
nace = "nar8", decimal = TRUE)
#> [preAggregate 100*14->56*8]
#> [extraAggregate 56*8->26*8] Checking .....
#> GaussSuppression_none: ............................
# Lager data med to stataar
z100$stataar <- "2019"
z$stataar <- "2020"
z127 <- rbind(z100, z)
out127 <- SdcForetakPerson(z127, between = prikkeVarB, by = "stataar")
#> [preAggregate 100*15->56*7]
#> [extraAggregate 56*7->15*6] Checking .....
#> GaussSuppression_none: ................................
#> [aggregate for PLSroundingSuppressed 100*15->15*4]
#> [preAggregate 27*15->21*7]
#> [extraAggregate 21*7->6*6] Checking .....
#> GaussSuppression_none: ................
#> [aggregate for PLSroundingSuppressed 27*15->6*4]
head(out127)
#> stataar ARB_ARBKOMM nar17 original rounded difference roundedSuppressed
#> 1 2019 Total Total 100 100 0 100
#> 2 2019 Total 49-53 22 22 0 22
#> 3 2019 Total 58-63 7 7 0 7
#> 4 2019 Total 84 32 32 0 32
#> 5 2019 Total 85 39 39 0 39
#> 6 2019 05 Total 67 67 0 67
tail(out127)
#> stataar ARB_ARBKOMM nar17 original rounded difference roundedSuppressed
#> 51 2020 1821 Total 4 4 0 4
#> 52 2020 1821 58-63 0 0 0 0
#> 53 2020 1821 84 4 4 0 4
#> 54 2020 1822 Total 6 6 0 6
#> 55 2020 1822 58-63 2 2 0 NA
#> 56 2020 1822 84 4 4 0 NA