I detta dokument demonstreras hur decoder-paketet kan vara till hjälp vid översätning av koder från RC.
Ladda ner decoder-paketet om det inte tidigare gjorts
# Senaste version från CRAN
install.packages("decoder")
# Eller senaste utvecklingsversion från Bitbucket
devtools::install_bitbucket("cancercentrum/decoder")
decoder-paketet innehåller en del färdiga översättningstabeller. Se ?key_value_data för en förteckning över dessa. Samtliga översättningstabeller innehåller också en hjälptext som nås via den hjälpsidan.
Nu har vi dock ett behov av att själva skapa ett så kallat “keyvalue”-object baserat på egna koder.
Vi nyttjar därför Excel-listan.
codes <-
readxl::read_excel(
"RC_organisationsvariabler.xlsx",
# Koder kan inledas med nolla (och sådan försvinner om variabeln hanteras numeriskt),
# därav läses alla variabler in som text.
# Eg finns bara 5 kolumner men filen innehåller även en blank kolumn
col_types = rep("text", 6)
) %>%
# I detta exempel vill vi göra översättningar från sjukhus kod (key) till sjukhusnamn (value).
# Men naturligtv is går det lika bra att använda andra kolumner!
dplyr::select(
key = sjhkod,
value = Sjukhus
) %>%
# Vi kan bara göra översättningar baserat på de rader där det faktiskt finns koder
# att utgå ifrån
dplyr::filter(
!is.na(key)
) %>%
# Vi skapar nu ett översättningsobjekt mha decoder-paketet
decoder::as.keyvalue()
Låt oss skapa en vekor med 100 sjukhuskoder. Vi tar här ett stickprov av de koder som finns i Excel-filen samt ett antal felaktiga koder som också kan ha smugit sig in av misstag och ett par blanka koder:
set.seed(1)
(ex_data <- sample(c(codes$key, "felaktig kod", NA, ""), 100, TRUE))
## [1] "51010" "51012" "52013" NA
## [5] "50886" "felaktig kod" NA "52017"
## [9] "52017" "50010" "50886" "50071"
## [13] "53010" "51031" "53012" "52011"
## [17] "53011" "" "51012" "53012"
## [21] NA "50886" "52017" "50070"
## [25] "51010" "51031" "50001" "51031"
## [29] "felaktig kod" "51012" "52011" "52013"
## [33] "52011" "50071" "53013" "53010"
## [37] "53012" "50070" "53011" "51031"
## [41] "53013" "52017" "53012" "52012"
## [45] "52012" "53012" "50001" "52011"
## [49] "53011" "53010" "52011" "felaktig kod"
## [53] "51032" "51010" "50010" "50070"
## [57] "51011" "52011" "52017" "51031"
## [61] NA "51011" "51032" "51011"
## [65] "52017" "51010" "52011" "53012"
## [69] "50010" "felaktig kod" "51012" "53013"
## [73] "51012" "51012" "52011" "felaktig kod"
## [77] "felaktig kod" "51031" "53012" ""
## [81] "51032" "53010" "51031" "51011"
## [85] "53011" "50886" "53010" "50070"
## [89] "51010" "50071" "51010" "50010"
## [93] "52017" "felaktig kod" "53012" "53012"
## [97] "51032" "51031" "53013" "52013"
Med hjälp av vårt översättningsobjekt ovan kan vi nu omkoda våra exempelkoder till klartext:
decoder::decode(ex_data, codes)
## Warning: transformed to match the keyvalue: Spaces are removed from
## beginning and end. Only the first 5 characters are used.
## Warning: Some codes could not be translated (9 cells)
## [1] "Uddevalla sjukhus" "Kungälvs sjukhus" "SÄS Skene"
## [4] NA "Angereds Närsjukhus" NA
## [7] NA "NÄL i Trollhättan" "NÄL i Trollhättan"
## [10] "SU/Östra" "Angereds Närsjukhus" "Frölunda sjukhus"
## [13] "Falköping" "Lysekils sjukhus" "Mariestad"
## [16] "SÄS Borås" "Lidköping" NA
## [19] "Kungälvs sjukhus" "Mariestad" NA
## [22] "Angereds Närsjukhus" "NÄL i Trollhättan" "Lundby sjukhus"
## [25] "Uddevalla sjukhus" "Lysekils sjukhus" "SU/Sahlgrenska"
## [28] "Lysekils sjukhus" NA "Kungälvs sjukhus"
## [31] "SÄS Borås" "SÄS Skene" "SÄS Borås"
## [34] "Frölunda sjukhus" "Skövde" "Falköping"
## [37] "Mariestad" "Lundby sjukhus" "Lidköping"
## [40] "Lysekils sjukhus" "Skövde" "NÄL i Trollhättan"
## [43] "Mariestad" "Alingsås lasarett" "Alingsås lasarett"
## [46] "Mariestad" "SU/Sahlgrenska" "SÄS Borås"
## [49] "Lidköping" "Falköping" "SÄS Borås"
## [52] NA "Strömstads sjukhus" "Uddevalla sjukhus"
## [55] "SU/Östra" "Lundby sjukhus" "SU/Mölndal"
## [58] "SÄS Borås" "NÄL i Trollhättan" "Lysekils sjukhus"
## [61] NA "SU/Mölndal" "Strömstads sjukhus"
## [64] "SU/Mölndal" "NÄL i Trollhättan" "Uddevalla sjukhus"
## [67] "SÄS Borås" "Mariestad" "SU/Östra"
## [70] NA "Kungälvs sjukhus" "Skövde"
## [73] "Kungälvs sjukhus" "Kungälvs sjukhus" "SÄS Borås"
## [76] NA NA "Lysekils sjukhus"
## [79] "Mariestad" NA "Strömstads sjukhus"
## [82] "Falköping" "Lysekils sjukhus" "SU/Mölndal"
## [85] "Lidköping" "Angereds Närsjukhus" "Falköping"
## [88] "Lundby sjukhus" "Uddevalla sjukhus" "Frölunda sjukhus"
## [91] "Uddevalla sjukhus" "SU/Östra" "NÄL i Trollhättan"
## [94] NA "Mariestad" "Mariestad"
## [97] "Strömstads sjukhus" "Lysekils sjukhus" "Skövde"
## [100] "SÄS Skene"