|
library(shiny)
|
|
shinyServer(function(input,output,session){
|
|
|
|
dt1 <- reactive({
|
|
inFile <- input$file1
|
|
if(is.null(inFile))
|
|
dt1 <- read.table('datos1.txt', header=T, sep='\t')
|
|
else dt1 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
})
|
|
|
|
dt2 <- reactive({
|
|
inFile <- input$file2
|
|
if(is.null(inFile))
|
|
dt2 <- read.table('datos2.txt', header=T, sep='\t')
|
|
else dt2 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
})
|
|
|
|
observe({
|
|
updateSelectInput(session, "variable", choices=names(dt1()))
|
|
})
|
|
|
|
observe({
|
|
updateSelectInput(session, "variable", choices=names(dt2()))
|
|
})
|
|
|
|
observeEvent(input$variable, {
|
|
column_levels <- as.character(sort(unique(dt1()[[input$variable]])))
|
|
updateSelectInput(session, "niveles", choices = column_levels)
|
|
})
|
|
|
|
observeEvent(input$variable, {
|
|
column_levels <- as.character(sort(unique(dt2()[[input$variable]])))
|
|
updateSelectInput(session, "niveles", choices = column_levels)
|
|
})
|
|
|
|
output$inputData1 <- renderTable({
|
|
inFile <- input$file1
|
|
if(is.null(inFile))
|
|
dt1 <- read.table('datos1.txt', header=T, sep='\t')
|
|
else dt1 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
dt1
|
|
})
|
|
|
|
output$inputData2 <- renderTable({
|
|
inFile <- input$file2
|
|
if(is.null(inFile))
|
|
dt2 <- read.table('datos2.txt', header=T, sep='\t')
|
|
else dt2 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
dt2
|
|
})
|
|
|
|
output$consolidado <- renderTable({
|
|
inFile <- input$file1
|
|
if(is.null(inFile))
|
|
dt1 <- read.table('datos1.txt', header=T, sep='\t')
|
|
else dt1 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
inFile <- input$file2
|
|
if(is.null(inFile))
|
|
dt2 <- read.table('datos2.txt', header=T, sep='\t')
|
|
else dt2 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
y1 <- na.omit(dt1[, input$variable])
|
|
y2 <- na.omit(dt2[, input$variable])
|
|
|
|
tabla1 <- table(y1)
|
|
tabla2 <- table(y2)
|
|
|
|
x1 <- tabla1[input$niveles]
|
|
x2 <- tabla2[input$niveles]
|
|
|
|
n1 <- sum(tabla1)
|
|
n2 <- sum(tabla2)
|
|
|
|
res <- cbind(c(x1, x2), c(n1, n2), c(x1, x2)/c(n1, n2))
|
|
colnames(res) <- c('Número de éxitos',
|
|
'Número de casos',
|
|
'Proporción observada')
|
|
rownames(res) <- c('Base de datos # 1', 'Base de datos # 2')
|
|
res
|
|
}, align='c', rownames=TRUE, bordered=TRUE, digits=4)
|
|
|
|
|
|
output$appPlot <- renderPlot({
|
|
inFile <- input$file1
|
|
if(is.null(inFile))
|
|
dt1 <- read.table('datos1.txt', header=T, sep='\t')
|
|
else dt1 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
inFile <- input$file2
|
|
if(is.null(inFile))
|
|
dt2 <- read.table('datos2.txt', header=T, sep='\t')
|
|
else dt2 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
|
|
par(mfrow=c(1, 2))
|
|
|
|
|
|
Niveles <- na.omit(dt1[, input$variable])
|
|
tabla <- table(Niveles)
|
|
ptabla <- prop.table(tabla)
|
|
xx <- barplot(ptabla, las=1, col='deepskyblue3',
|
|
ylab='Frecuencia relativa',
|
|
xlab='Niveles', ylim=c(0, max(ptabla)+0.1),
|
|
main='Base de datos # 1')
|
|
|
|
text(x=xx, y=ptabla, pos=3, cex=0.8, col="black",
|
|
label=round(ptabla, 4))
|
|
|
|
|
|
Niveles <- na.omit(dt2[, input$variable])
|
|
tabla <- table(Niveles)
|
|
ptabla <- prop.table(tabla)
|
|
xx <- barplot(ptabla, las=1, col='deepskyblue3',
|
|
ylab='Frecuencia relativa',
|
|
xlab='Niveles', ylim=c(0, max(ptabla)+0.1),
|
|
main='Base de datos # 2')
|
|
|
|
text(x=xx, y=ptabla, pos=3, cex=0.8, col="black",
|
|
label=round(ptabla, 4))
|
|
|
|
})
|
|
|
|
output$resul1 <- renderText({
|
|
inFile <- input$file1
|
|
if(is.null(inFile))
|
|
dt1 <- read.table('datos1.txt', header=T, sep='\t')
|
|
else dt1 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
inFile <- input$file2
|
|
if(is.null(inFile))
|
|
dt2 <- read.table('datos2.txt', header=T, sep='\t')
|
|
else dt2 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
y1 <- na.omit(dt1[, input$variable])
|
|
y2 <- na.omit(dt2[, input$variable])
|
|
|
|
tabla1 <- table(y1)
|
|
tabla2 <- table(y2)
|
|
|
|
x1 <- tabla1[input$niveles]
|
|
x2 <- tabla2[input$niveles]
|
|
|
|
n1 <- sum(tabla1)
|
|
n2 <- sum(tabla2)
|
|
|
|
ph <- prop.test(x=c(x1, x2), n=c(n1, n2),
|
|
alternative=input$h0,
|
|
conf.level=input$alfa,
|
|
correct=input$correct)
|
|
|
|
ph$statistic <- sign(ph$estimate[1] - ph$estimate[2]) * sqrt(ph$statistic)
|
|
paste0('El estadístico de prueba es z0=', round(ph$statistic, 4),
|
|
' con un valor-P de ', round(ph$p.value, 2), '.')
|
|
})
|
|
|
|
output$resul2 <- renderText({
|
|
inFile <- input$file1
|
|
if(is.null(inFile))
|
|
dt1 <- read.table('datos1.txt', header=T, sep='\t')
|
|
else dt1 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
inFile <- input$file2
|
|
if(is.null(inFile))
|
|
dt2 <- read.table('datos2.txt', header=T, sep='\t')
|
|
else dt2 <- read.csv(inFile$datapath, header=input$header,
|
|
sep=input$sep)
|
|
|
|
y1 <- na.omit(dt1[, input$variable])
|
|
y2 <- na.omit(dt2[, input$variable])
|
|
|
|
tabla1 <- table(y1)
|
|
tabla2 <- table(y2)
|
|
|
|
x1 <- tabla1[input$niveles]
|
|
x2 <- tabla2[input$niveles]
|
|
|
|
n1 <- sum(tabla1)
|
|
n2 <- sum(tabla2)
|
|
|
|
ph <- prop.test(x=c(x1, x2), n=c(n1, n2),
|
|
alternative=input$h0,
|
|
conf.level=input$alfa,
|
|
correct=input$correct)
|
|
|
|
intervalo <- paste("(", round(ph$conf.int[1], digits=4),
|
|
", ",
|
|
round(ph$conf.int[2], digits=4),
|
|
").", sep='')
|
|
paste0('El intervalo de confianza del ', 100*input$alfa,
|
|
'% para proporción poblacional es ',
|
|
intervalo)
|
|
})
|
|
|
|
})
|
|
|