R/nbClean.R

##' Clean dataset
##'
##' Denne funksjonen skal filtrere datasettet som er spesifisert i datautvalget
##'
##' @param data Datasettet som er ferdig konvertert til R format
##' @return Renset datasettet til videre behandling
##'
##' @export


nbClean <- function(data = NULL) {

    if (is.null(data)) {
        RegData <- nbFile()
    } else {
        RegData <- data
    }


    ## white space
    trim <- function( x ) {
        gsub("(^[[:space:]]+|[[:space:]]+$)", "", x)
    }

    ## Inn_Type = regValg
    RegData$ValgtData2 <- trim(RegData$inn_Type)
    ## RegData$ValgtData <- gsub(" $", "", RegData$inn_Type, perl = T)
    RegData$regValg[RegData$ValgtData2=="Førstegangsregistrering"] <- 1
    RegData$regValg[RegData$ValgtData2=="Årskontroll"] <- 2
    RegData$regValg[RegData$ValgtData2=="Poliklinisk kontroll"] <- 3
    RegData$regValg <- as.factor(RegData$regValg)

    ## lab_HbA1cAkerVerdi = hba
    RegData$hba <- as.numeric(trim(RegData$lab_HbA1cAkerVerdi))

    ## År
    ## RegData$Year <- as.numeric(format(as.POSIXct(RegData$inn_Dato, format = "%Y-%m-%d %H:%M"), "%Y"))
    RegData$Year <- as.numeric(format(as.POSIXct(RegData$inn_Dato, origin = "1899-12-30 0:00:00", format ="%Y-%m-%d %H:%M"), "%Y"))
    RegData$innYear <- as.Date(format(as.POSIXct(RegData$inn_Dato, origin = "1899-12-30 0:00:00", format ="%Y-%m-%d %H:%M"), "%Y-%m-%d"))
    RegData$diagYear <- as.Date(format(as.POSIXct(RegData$inn_DiagDato, origin = "1899-12-30 0:00:00", format ="%Y-%m-%d %H:%M"), "%Y-%m-%d"))

    ## Diabetes varighet
    RegData$diaVarighet <- floor(difftime(RegData$innYear, RegData$diagYear, units = "days")/365)
    RegData$diaVarighet <- as.numeric(RegData$diaVarighet)

    ## Kjønn = kjonn
    RegData$kjonn1 <- as.factor(trim(RegData$Kjonn))
    RegData$kjonn <- NA
    RegData$kjonn[RegData$kjonn1=="Gutt"] <- 1
    RegData$kjonn[RegData$kjonn1=="Jente"] <- 2
    RegData$kjonn <- factor(RegData$kjonn)

    ## Diabetes Type 1
    RegData$diabetes_Type1<- trim(RegData$diabetes_Type1)
    RegData$diaType1 <- ifelse(RegData$diabetes_Type1 == "Ja", 1, 2) #1:Type1 2:AndreType

    ## Alder
    RegData$FDato1 <- as.POSIXct(RegData$FDato, origin = "1899-12-30 0:00:00")
    RegData$Alder <- as.integer(floor(difftime(Sys.time(), as.POSIXct(RegData$FDato1, format = "%Y-%m-%d %H:%M"), units = "days")/365))

    ##  Alder del i kategorier
    alder.kat <- function(x, lower, upper, by,
                          sep = "-") {
        labs <- c(paste(seq(lower, upper - by, by = by),
                        seq(lower + by - 1, upper - 1, by = by),
                        sep = sep),
                  paste(upper, "+", sep = ""))
        cut(floor(x), breaks = c(seq(lower, upper, by = by), Inf),
            include.lowest = TRUE, right = FALSE, labels = labs)
    }

    RegData$AlderKat <- alder.kat(RegData$Alder, 0, 30, 5)


    ## SykehusNavn , SykehusKode
    RegData$SykehusNavn <- trim(RegData$Sykehus)
    RegData$SykehusKode <- NA
    RegData$SykehusKode[RegData$SykehusNavn=="Ullevål universitetssykehus"] <- 1
    RegData$SykehusKode[RegData$SykehusNavn=="Haugesund sjukehus"] <- 18
    RegData$SykehusKode[RegData$SykehusNavn=="Sykehuset i Vestfold, Tønsberg"] <- 15
    RegData$SykehusKode <- factor(RegData$SykehusKode)

    return(invisible(RegData))
}
ybkamaleri/nbReg documentation built on May 4, 2019, 2:31 p.m.