# Lade notwendige Bibliotheken
library(shiny)
## Warning: Paket 'shiny' wurde unter R Version 4.4.1 erstellt
library(readxl)
library(janitor)
## Warning: Paket 'janitor' wurde unter R Version 4.4.1 erstellt
## 
## Attache Paket: 'janitor'
## Die folgenden Objekte sind maskiert von 'package:stats':
## 
##     chisq.test, fisher.test
library(skimr)
## Warning: Paket 'skimr' wurde unter R Version 4.4.1 erstellt
library(ggplot2)
## Warning: Paket 'ggplot2' wurde unter R Version 4.4.2 erstellt
library(dplyr)
## Warning: Paket 'dplyr' wurde unter R Version 4.4.2 erstellt
## 
## Attache Paket: 'dplyr'
## Die folgenden Objekte sind maskiert von 'package:stats':
## 
##     filter, lag
## Die folgenden Objekte sind maskiert von 'package:base':
## 
##     intersect, setdiff, setequal, union
# Daten einlesen und vorbereiten
disc_lab <- read.csv("C:/Master/3. Semester/R/Dataset/disc_lab_lencha2.csv", 
                     header = TRUE, sep = ",")

# Konvertiere Variablen zu numerischen Werten
cols_to_numeric <- c("P8_1", "P8_1A", "P9_1", "P11_4_1", "P11_4_2", "P11_4_3", 
                     "P11_4_4", "P11_4_5", "P11_5_7", "P11_6_11", 
                     "P11_8_1", "P11_8_2", "P11_8_3", "P11_8_4", "P11_8_5")

disc_lab[cols_to_numeric] <- lapply(disc_lab[cols_to_numeric], as.numeric)

# Filtere Daten für Frauen
frauen <- disc_lab %>%
  filter(
    P9_1 == 2 & 
    P8_1A %in% c(1, 2, 3, 4) & 
    P11_5_7 != 9 & 
    P11_6_11 != 9
  )

# Diskriminierungsvariablen kodieren
frauen$dicriminacion_1 <- ifelse(frauen$P11_4_1 == 1, 1, 0)
frauen$dicriminacion_2 <- ifelse(frauen$P11_4_2 == 1, 1, 0)
frauen$dicriminacion_3 <- ifelse(frauen$P11_4_3 == 1, 1, 0)
frauen$dicriminacion_4 <- ifelse(frauen$P11_4_4 == 1, 1, 0)
frauen$dicriminacion_5 <- ifelse(frauen$P11_4_5 == 1, 1, 0)
frauen$dicriminacion_6 <- ifelse(frauen$P11_5_7 == 1, 1, 0)

# Shiny App UI
ui <- fluidPage(
  titlePanel("Analyse der Diskriminierungsdaten"),
  
  sidebarLayout(
    sidebarPanel(
      selectInput("variable", "Wähle eine Variable:", 
                  choices = c("dicriminacion_1", "dicriminacion_2", 
                              "dicriminacion_3", "dicriminacion_4", 
                              "dicriminacion_5", "dicriminacion_6")),
      radioButtons("chart_type", "Diagrammtyp:", 
                   choices = c("Balkendiagramm" = "bar", 
                               "Tortendiagramm" = "pie"))
    ),
    
    mainPanel(
      plotOutput("plot"),
      tableOutput("table")
    )
  )
)

# Shiny Server
server <- function(input, output) {
  
  # Plot erstellen
  output$plot <- renderPlot({
    var <- input$variable
    data <- table(frauen[[var]])
    
    if (input$chart_type == "bar") {
      barplot(data, 
              col = c("lightblue", "salmon"), 
              main = paste("Balkendiagramm von", var), 
              xlab = "Kategorie", ylab = "Häufigkeit")
    } else if (input$chart_type == "pie") {
      pie(data, 
          col = c("lightblue", "salmon"), 
          main = paste("Tortendiagramm von", var))
    }
  })
  
  # Häufigkeitstabelle anzeigen
  output$table <- renderTable({
    var <- input$variable
    table(frauen[[var]])
  })
}

# App starten
shinyApp(ui = ui, server = server)
Shiny applications not supported in static R Markdown documents