FreddyHernandez's picture
Upload 7 files
0345d3f verified
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]) # Para sacar los NA de la 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)
# Creando la particion
par(mfrow=c(1, 2))
# Primer barplot
Niveles <- na.omit(dt1[, input$variable]) # Para sacar los NA de la 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))
# Segundo barplot
Niveles <- na.omit(dt2[, input$variable]) # Para sacar los NA de la 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]) # Para sacar los NA de la 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]) # Para sacar los NA de la 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)
})
})