bi_prop <- function(n_stkp,betr_niveau,datatype,mijndatakolom,succ_stkp,methode){
n <- n_stkp
if(all(n == as.integer(n)) & n >=2) {
  if(betr_niveau >= 0 & betr_niveau < 1) {
    if(datatype %in% 1:2) {
      if(methode == "wilson" | methode == "ac_+2/+4") {
        library(binom)
        library(readxl)
        library(glue)
        library(gt)
        library(gtExtras)         
 if (datatype == 1) {skip <- 1    
   if(mijndatakolom %in% LETTERS[1:26]){    
     mdat <- read_excel("xcl/mijndata.xlsx", range = cell_cols(mijndatakolom))
     if(!length(mdat) == 0 ){
       x <- unlist(as.vector(mdat[,1]), use.names = FALSE)
         if(all(x %in% c(0, 1))){          
           if(!( any(is.na(x)) | !is.numeric(x) | length(x) != n )){skip <- 0         
             x <- sum(x)
           }else{cat(paste0("het aantal data in kolom \"", mijndatakolom, "\" verschilt van \nde opgegeven steekproefgrootte in n_stkp \nof \nde data in kolom \"", mijndatakolom, "\" zijn niet goed ingebracht \n \nPas aan. Lees de handleiding: \"Data bij toetsen en \nbij betrouwbaarheidsintervallen: van Excel naar R\"." ) ) }
         }else{ cat(paste0("kolom \"", mijndatakolom, "\" mag alleen nullen en enen bevatten \nPas aan.") )}                
     }else{cat(paste0("kolom \"", mijndatakolom, "\" in mijndata.xlsx is leeg \nPas aan.")) } 
   }else{cat("in mijndatakolom <- ...  tik je een \nHOOFDLETTER TUSSEN AANHALINGSTEKENS \nLetters tussen A en Z. \nPas aan.")}
 }else if(datatype == 2) {skip <- 1  
     x <-  succ_stkp
     if(all(x == as.integer(x)) & x >=0 & x <= n) {skip <- 0 
     }else{cat("Tik een geheel getal, minstens 0 en hoogstens", n ,"\nvoor het aantal successen in de steekproef. Pas aan.")} } 
 if (skip == 0){options(scipen = 999)
   prop_stkpr <- round(x/n, 4)
   colnm <- "hc"
   if(methode == "wilson"){intval <- binom.confint(x, n, conf.level = betr_niveau, methods = "wilson")
      intval$method <- as.character(round((intval$upper-intval$lower)/2,4))
      kkw <- (qnorm((betr_niveau+1)/2))**2
      intval$mean <- (kkw/2 + x) / (kkw + n)
   }else if(methode == "ac_+2/+4"){methode <- "agresti-coull +2/+4" 
      x24 <- x + 2
      n24 <- n + 4
      betr_niveau <- 0.95
      intval <- binom.confint(x24, n24, conf.level = betr_niveau, methods = "asymptotic" ) 
      intval$method <- as.character(round((intval$upper-intval$lower)/2,4))
        if(intval$lower < 0){intval$lower <- 0
          colnm <- "lower"}
        if(intval$upper > 1){intval$upper <- 1
          colnm <- "upper"} }
 nivperc <- trunc(betr_niveau*10^4)/10^2
 bi_tbl <- select(intval, lower,  upper, mean, method) |> gt() |> 
   cols_label (lower = html("ondergrens"),
               upper = html("bovengrens"),     
               mean = html("p&#771;"),
               method = html("foutenmarge")) |>
   fmt_number(columns = c(lower,  upper, mean),
               use_seps = FALSE, decimals = 4) |> 
   tab_style(style = cell_text(align = "center"),
             locations = list( cells_column_labels(), cells_body())) |> 
   tab_options(data_row.padding = px(0.5))|>
   gt_highlight_cols(c(mean, method), fill = "lightblue",
                              alpha = 0.4, font_weight = "normal") 
  if(colnm == "lower" | colnm == "upper"){bi_tbl <- bi_tbl |>
   gt_highlight_cols(colnm, fill = "grey90",font_weight = "normal") }
  if(datatype == 1){bi_tbl <- bi_tbl |>
    tab_header(title = html(glue("{nivperc} %  betrouwbaarheidsinterval voor  p<br><font size=3>methode = {methode}<br>stkp n = {n}   succ x = {x}   p&#770; = {prop_stkpr}   data: kol {mijndatakolom}</font>")))
  }else{bi_tbl <- bi_tbl |>
    tab_header(title = html(glue("{nivperc} %  betrouwbaarheidsinterval voor  p<br><font size=3>methode = {methode}<br>stkp n = {n}   succ x = {x}   p&#770; = {prop_stkpr}</font>")))} 
  bi_tbl}       
      }else{cat("Voor methode <-... vul je in \n(met aanhalingstekens) \"wilson\" ofwel \"ac_+2/+4\" . Pas aan.") }          
    }else{cat("Voor datatype <-... mag je alleen maar \nhet cijfer 1 of 2 invullen. Pas aan.") }
  }else{cat("Een betrouwbaarheidsniveau ligt tussen 0 en 1. \nBovendien is een 100 % betrouwbaarheidsniveau niet zinvol \nwant dan krijg je (-∞ , +∞) als betrouwbaarheidsinterval. \nPas dus aan zodat  0 ≤ betr_niveau < 1.") }
}else{cat("Tik een geheel getal groter dan 1 voor \nde steekproefgrootte: n_stkp. Pas aan.")}
}