sweidnumbr : Structural handling of swedish identity numbers
Mans Magnusson and Erik Bulow
2024-01-13
Source:vignettes/sweidnumbr.Rmd
sweidnumbr.Rmd
This R package provides tools to work with swedish identity numbers such as personal identity numbers (personnummer) and organizational identity numbers (organisationsnummer).
Table of contents
Installation (Installation)
Example: personal identity numbers (Personal identity numbers)
Example: organizational identity numbers (Organizational identity number)
Licensing and Citations (Licensing and Citations)
References (References)
Installation
Install the stable release version in R:
install.packages("sweidnumbr")
Test the installation by loading the library:
We also recommend setting the UTF-8 encoding:
Sys.setlocale(locale="UTF-8")
Example: personal identity numbers
As a first step we need to convert personal identity numbers (pin) to the same standard format used by the Swedish tax authority.
example_pin <- c("640823-3234", "6408233234", "19640823-3230")
example_pin <- as.pin(example_pin)
example_pin
## [1] "196408233234" "196408233234" "196408233230"
## Personal identity number(s)
The next step is to test if the vector is a pin
object.
To do this we use the is.pin()
function.
is.pin(example_pin)
## [1] TRUE
This only check the format of the pin. To check the pin using the
control number we use pin_ctrl()
.
pin_ctrl(example_pin)
## [1] TRUE TRUE FALSE
We can now use pin_birthplace()
and
pin_sex()
. To get information on sex and birthplace.
pin_sex(example_pin)
## [1] Male Male Male
## Levels: Male
pin_birthplace(example_pin)
## [1] Gotlands län Gotlands län Gotlands län
## 28 Levels: Stockholm stad Stockholms län Uppsala län ... Born after 31 december 1989
As the last step we can calculate the age based on the pin. We choose the date where we want to calculate the age. If date is not specified the current date is used.
pin_age(example_pin)
## [1] 59 59 59
pin_age(example_pin, date = "2000-01-01")
## [1] 35 35 35
It is also possible to format the pin for presentation in different
forms. (Note however that the output of format_pin
is just
a character and no longer a pin
object):
format_pin(example_pin, "%Y-%m-%d-%N")
## [1] "1964-08-23-3234" "1964-08-23-3234" "1964-08-23-3230"
format_pin(example_pin, "%P")
## [1] "(19) 64-08-23 - 3234" "(19) 64-08-23 - 3234" "(19) 64-08-23 - 3230"
Sometimes we want some example pin
s. We can easily
simulate pin
s using rpin()
:
rpin(3)
## [1] "196001283768" "202007882976" "191605078615"
## Personal identity number(s)
Example: organizational identity numbers
Handling of organizational identity numbers is done in a similar fashion. But organizational numbers are only allowed to have one format.
example_oin <- c("556000-4615", "232100-0156", "802002-4280")
example_oin <- as.oin(example_oin)
example_oin
## [1] "556000-4615" "232100-0156" "802002-4280"
## Organizational identity number(s)
We can test if the vector has a correct format in a similar way as
for pin
.
is.oin(example_oin)
## [1] TRUE
With a vector of oin
we can check if the organizational
number is correct.
oin_ctrl(example_oin)
## [1] TRUE TRUE TRUE
We can also check the type of organization.
oin_group(example_oin)
## [1] Aktiebolag
## [2] Stat, landsting, kommuner, församlingar
## [3] Ideella föreningar och stiftelser
## 3 Levels: Aktiebolag ... Stat, landsting, kommuner, församlingar
Sometimes we want some example oin
s. We can easily
simulate oin
s using roin()
:
roin(3)
## [1] "243659-4754" "867319-5239" "642941-3542"
## Organizational identity number(s)
Licensing and Citations
This work can be freely used, modified and distributed under the open license specified in the DESCRIPTION file.
Kindly cite the work as follows
citation("sweidnumbr")
## Kindly cite the sweidnumbr R package as follows:
##
## Magnusson, Mans and Bulow, Erik (2024). sweidnumbr: R tools to handle
## of swedish identity numbers. R package version 1.5.0 URL:
## https://github.com/rOpenGov/sweidnumbr
##
## A BibTeX entry for LaTeX users is
##
## @Misc{,
## title = {sweidnumbr: R tools to handle of swedish identity numbers.},
## author = {Mans Magnusson and Erik Bulow},
## url = {https://github.com/rOpenGov/sweidnumbr},
## year = {2024},
## note = {R package version 1.5.0},
## }
References
- Population registration in Sweden. (2007)
- SKV 704 : Personnummer. (2007)
- SOU 2008:60 : Personnummer och samordningsnummer. (2008)
- Personnummer: information fran Centrala folkbokförings- och uppbördsnämnden. (1967). Stockholm
- Den svenska folkbokföringens historia under tre sekel. (1982). Solna: Riksskatteverket URL
- Lag (1974:174) om identitetsbeteckning for juridiska personer m.fl.
Session info
This vignette was created with
## R version 4.3.2 (2023-10-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.3 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0
##
## locale:
## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
##
## time zone: UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] sweidnumbr_1.5.0
##
## loaded via a namespace (and not attached):
## [1] vctrs_0.6.5 cli_3.6.2 knitr_1.45 rlang_1.1.3
## [5] xfun_0.41 stringi_1.8.3 purrr_1.0.2 generics_0.1.3
## [9] textshaping_0.3.7 jsonlite_1.8.8 glue_1.7.0 backports_1.4.1
## [13] htmltools_0.5.7 ragg_1.2.7 sass_0.4.8 rmarkdown_2.25
## [17] evaluate_0.23 jquerylib_0.1.4 fastmap_1.1.1 yaml_2.3.8
## [21] lifecycle_1.0.4 memoise_2.0.1 stringr_1.5.1 compiler_4.3.2
## [25] fs_1.6.3 timechange_0.2.0 systemfonts_1.0.5 digest_0.6.34
## [29] R6_2.5.1 magrittr_2.0.3 checkmate_2.3.1 bslib_0.6.1
## [33] tools_4.3.2 lubridate_1.9.3 pkgdown_2.0.7 cachem_1.0.8
## [37] desc_1.4.3