数据表中的R闪亮列未填充但没有错误

时间:2018-06-19 06:54:17

标签: r shiny

我正在构建一个包含男性和女性工资的数据表,我从csv文件中检索。代码运行,我得到一个数据表,但工资列和“pensioengrondslag”缺失。 我在下面编写它的方式是这样我可以查看给定年龄的每个性别的工资。 R没有返回错误,我现在已经多次通过我的代码,但我无法弄清楚出了什么问题。

也许别人知道?一些帮助将不胜感激! 这是我的代码:

server.R:

library(prodlim)
library(lubridate)
library(DT)
library(eeptools)


function(input, output) {
  insert <- reactive({

    # Genereer geboortedata
    GeboorteDatum <- sample(seq(as.Date('1900/01/02'), as.Date(input$geboorteData[2]), by = "day"), input$aantalDeelnemers, replace = TRUE)

    # Genereer het geslacht
    if (input$manVrouwVerhouding == "alleen mannen") {
      Geslacht <- sample("M", replace = TRUE, size = input$aantalDeelnemers)
    }
    if (input$manVrouwVerhouding == "0.9/0.1") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.9,0.1))
    }
    if (input$manVrouwVerhouding == "0.8/0.2") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.8,0.2))
    }
    if (input$manVrouwVerhouding == "0.7/0.3") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.7,0.3))
    }
    if (input$manVrouwVerhouding == "0.6/0.4") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.6,0.4))
    }
    if (input$manVrouwVerhouding == "0.5/0.5") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.5,0.5))
    }
    if (input$manVrouwVerhouding == "0.4/0.6") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.4,0.6))
    }
    if (input$manVrouwVerhouding == "0.3/0.7") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.3,0.7))
    }
    if (input$manVrouwVerhouding == "0.2/0.8") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.2,0.8))
    }
    if (input$manVrouwVerhouding == "0.1/0.9") {
      Geslacht <- sample(c("M","V"), replace = TRUE, size = input$aantalDeelnemers, prob = c(0.1,0.9))
    }
    if (input$manVrouwVerhouding == "alleen vrouwen") {
      Geslacht <- sample("V", replace = TRUE, size = input$aantalDeelnemers)
    }

    # Bereken leeftijden
    vectorDatumBeginDitJaar <- sample(as.Date('2018/01/01'), size = input$aantalDeelnemers, replace = TRUE)
    Leeftijd <- as.integer(age_calc(GeboorteDatum, vectorDatumBeginDitJaar, units = "years"))

    ## Creër salaris

    # Lees bestand in
    salaris <- read.csv("inkomens.csv", header = TRUE)
    leeftijdenBestand <- salaris[, "X...Leeftijd"]

    # Bepaal leeftijden waarop pensioen opgebouwd wordt (0-20 en 67-130 niet)
    pensioenOpbouwLeeftijden <- function(x){
      ouderDanPlft <- match(x, seq(67:130), nomatch = "NA")
      a <- c(0,seq(0:19))
      nieuw <- match(Leeftijd, a, nomatch = 0)
      inverse <- match(nieuw, "0", nomatch = "NA")
      salarisLeeftijden <- ouderDanPlft * inverse
      salarisLeeftijden
    }

    # Zoek voor elke leeftijd de index van de bijbehorende salaris
    teGebruikenLeeftijd <- pensioenOpbouwLeeftijden(Leeftijd)
    zoekIndices <- match(teGebruikenLeeftijd, leeftijdenBestand)

    # Bepaal de salaris per leeftijd voor mannen
    y <- match(Geslacht, "M")
    salarisMannen <- y*zoekIndices

    # Bepaal de salaris per leeftijd voor vrouwen
    x <- match(Geslacht, "V")
    salarisVrouwen <- x*zoekIndices

    # Creër schalen (kolom opzoeken)
    salarisMannenCategorie1 <- salaris[salarisMannen, 2]
    salarisMannenCategorie2 <- salaris[salarisMannen, 3]
    salarisMannenCategorie3 <- salaris[salarisMannen, 4]
    salarisMannenCategorie4 <- salaris[salarisMannen, 5]
    salarisMannenCategorie5 <- salaris[salarisMannen, 6]

    salarisVrouwenCategorie1 <- salaris[salarisVrouwen, 7]
    salarisVrouwenCategorie2 <- salaris[salarisVrouwen, 8]
    salarisVrouwenCategorie3 <- salaris[salarisVrouwen, 9]
    salarisVrouwenCategorie4 <- salaris[salarisVrouwen, 10]
    salarisVrouwenCategorie5 <- salaris[salarisVrouwen, 11]

    # Link input aan salaris schaal
    if(input$salarisSchaal == "schaal 1"){
      Salaris <- salarisMannenCategorie1 + salarisVrouwenCategorie1
    }
    if(input$salarisSchaal == "schaal 2"){
      Salaris <- salarisMannenCategorie2 + salarisVrouwenCategorie2
    }
    if(input$salarisSchaal == "schaal 3"){
      Salaris <- salarisMannenCategorie3 + salarisVrouwenCategorie3
    }
    if(input$salarisSchaal == "schaal 4"){
      Salaris <- salarisMannenCategorie4 + salarisVrouwenCategorie4
    }
    if(input$salarisSchaal == "schaal 5"){
      Salaris <- salarisMannenCategorie5 + salarisVrouwenCategorie5
    }


    # Parttime percentage
    #Parttime_Percentage <- as.numeric(100, input$aantalDeelnemers)

    # Bereken aanspraak
    Pensioengrondslag <- (Salaris - input$franchise)

    # Creër tabel
    data <- data.frame(GeboorteDatum, Leeftijd , Geslacht, Salaris, Pensioengrondslag)
    data
  })

  # render table
  output$table <- DT::renderDataTable(DT::datatable({
    insert()
  }))
}

ui.R:

# Add things to app

fluidPage(
  titlePanel("PensioenFonds"),

  # Sidebar layout with input and output definitions
  sidebarLayout(
    sidebarPanel(
      numericInput("aantalDeelnemers",
                   "Aantal deelnemers pensioenfonds: ",
                   100, min=0),

      dateRangeInput("geboorteData",
                     "Geboortedata van de deelnemers: ", start = '1900/01/02', end = '2018/01/02', format = "dd/mm/yyyy"),

      selectInput("manVrouwVerhouding",
                  "Verhouding Man/Vrouw: ",
                  choices = c("alleen mannen", "0.9/0.1", "0.8/0.2", "0.7/0.3", "0.6/0.4", "0.5/0.5", "0.4/0.6", "0.3/0.7", "0.2/0.8", "0.1/0.9", "alleen vrouwen")),

      selectInput("salarisSchaal",
                  "Salaris schaal: ",
                  choices = c("schaal 1", "schaal 2", "schaal 3", "schaal 4", "schaal 5")),

      numericInput("franchise",
                   "Franchise: ",
                   13344, min=0)

    ),

    # Main panel for displaying outputs
    mainPanel(
      DT::dataTableOutput("table")
    )
  )
)

1 个答案:

答案 0 :(得分:0)

这是因为最终载体中的&#34; NA&#34; s。使用以下代码将&#34; NA&#34;&n更改为0,修复了我的问题:

na.zero <- function (x) {
      x[is.na(x)] <- 0
      return(x)
    }