SERGIO SANTOS MENDEZ GONZALEZ 7590-19-14902
Construir una funcion que calcule los estadısticos basicos y un histograma de una variable continua,
y otra que haga lo mismo sobre una variable discreta. ¿Serıa posible hacerlo en una unica?
Intentarlo.
funciones_estadisticos_basicos <- function(x, tipo) {
media <- mean(x)
mediana <- median(x)
desviacion <- sd(x)
varianza <- var(x)
minimo <- min(x)
maximo <- max(x)
message(paste0("La media es: ", media))
message (paste0("La mediana es: ", mediana))
message (paste0("La desviacion estandar es: ", desviacion))
message (paste0("La varianza es: ", varianza))
message (paste0("El minimo es: ", minimo))
message (paste0("El maximo es: ", maximo))
if (tipo == "continua") {
hist(x, main = "Histograma de variable continua", xlab = "Variable")
} else {
hist(x, main = "Histograma de variable discreta", xlab = "Variable")
}
}
Escribir una funcion que a partir de un [Link], haga una descriptiva numerica y grafica de todas
las variables (diferenciando el tipo de variable, categorica o cuantitativa) y que ademas haga una
gráfica de dispersion por pares (utilizar funcion pairs) para las variables continuas.
esta_descriptiva <- function(data) {
# Descriptiva numerica
print(summary(data))
# Descriptiva grafica
for (i in seq_len(ncol(data))) {
if ([Link](data[, i])) {
hist(data[, i],
main = paste("Histograma de", colnames(data)[i]),
xlab = colnames(data)[i]
)
} else {
barplot(table(data[, i]),
main = paste("Barplot de", colnames(data)[i]),
SERGIO SANTOS MENDEZ GONZALEZ 7590-19-14902
xlab = colnames(data)[i]
)
}
}
# grafica de dispersion por pares
pairs(data)
}
data <- [Link](
edad = c(20, 21, 22, 23, 24, 25, 26, 27, 28, 29),
peso = c(60, 70, 80, 90, 100, 110, 120, 130, 140, 150),
altura = c(150, 160, 170, 180, 190, 200, 210, 220, 230, 240)
)
message()("Descriptiva de un [Link]")
descriptiva(data)
Crear una función para la conexión a base de datos.
conectar_mysql <- function(
servidor,
base_datos,
usuario,
password,
query) {
# Construir la cadena de conexión
cadena_conexion <- paste0(
"Driver={ODBC Driver 17 for mysql};",
"Server=", servidor, ";",
"Database=", base_datos, ";",
"Uid=", usuario, ";",
"Pwd=", password
)
# Conectarse a la base de datos
conexion <- tryCatch(
{
dbConnect(odbc(), .connection_string = cadena_conexion)
},
error = function(e) {
cat(
"Error al intentar establecer conexión a mysql: ",
e$message, "\n"
SERGIO SANTOS MENDEZ GONZALEZ 7590-19-14902
)
return(NULL)
}
)
# Verifica si la conexión se realizó con éxito
if () {
cat("Conexión exitosa a mysql.\n")
datos <- tryCatch({
dbGetQuery(conexion, query)
}, error = function(e) {
cat("Error al ejecutar la consulta: ", e$message, "\n")
return(NULL)
})
# Retornar los datos obtenidos
return(datos)
} else {
cat("No se pudo establecer conexión a mysql.\n")
return(NULL)
}
}
Solución de ecuaciones lineales
lineales <- function(coefvar, constantesec, nrow) {
# calcular la solucion
matrix_var <- matrix(coefvar, nrow = nrow, byrow = TRUE)
solucion <- solve(matrix_var, constantesec)
# retornar la solucion
return(paste(
"sistema de ecuaciones es x =",
solucion[1], "e y =", solucion[2]
))
}
Construir una funcion [Link] que ordene un vector de forma ascendente o descendente segun un
argumento que nos lo indique (añadir los avisos necesarios para que funcione siempre).
mi_orden <- function(x, orden) {
if () {
stop("El vector no es de tipo numérico.")
}
if (orden != "ascendente" && orden != "descendente") {
SERGIO SANTOS MENDEZ GONZALEZ 7590-19-14902
stop("El argumento 'orden' debe ser 'ascendente' o 'descendente'.")
}
if (orden == "ascendente") {
return(sort(x))
} else {
return(sort(x, decreasing = TRUE))
}
}
Construye un diagrama de cajas de las temperaturas en Guatemala del mes de febrero del 2022.
Nota: ten en cuenta que ggplot se confunde cuando la estética x del histograma no es categórica;
por lo tanto, tendrás que convertir la variable mes en categórica (usando factor).
diagrama_cajas <- function(temperaturas) {
mes <- rep("Febrero", length(temperaturas))
datos_temperaturas <- [Link](mes = mes, temperatura = temperaturas)
datos_temperaturas$mes <- factor(datos_temperaturas$mes)
ggplot(datos_temperaturas, aes(x = mes, y = temperaturas, fill = mes)) +
geom_boxplot() +
labs(
title = "Diagrama de Cajas de Temperaturas en Guatemala (Febrero
2022)",
x = "Mes",
y = "Temperatura (°C)"
) +
theme_minimal()
}
Construye un histograma de las temperaturas en Guatemala del mes de febrero del 2022
histograma_temperaturas_guatemala <- function(temperaturas) {
ggplot() +
geom_histogram(aes(x = temperaturas),
fill = "blue",
color = "black",
bins = 10
) +
labs(
title = "Histograma de Temperaturas en Guatemala (Febrero 2022)",
x = "Temperatura (°C)",
SERGIO SANTOS MENDEZ GONZALEZ 7590-19-14902
y = "Frecuencia"
) +
theme_minimal()
}
Prueba con los gráficos de violín (que son una mezcla de los dos anteriores). Investigar
violin_temperaturas_guatemala <- function(temperaturas) {
ggplot() +
geom_violin(aes(x = "Temperaturas", y = temperaturas),
fill = "blue",
color = "black"
) +
labs(
title = "Gráfico de Violín de Temperaturas en Guatemala (Febrero
2022)",
x = "Temperaturas",
y = "Temperatura (°C)"
) +
theme_minimal()
}
Lee el código fuente para cada una de las siguientes tres funciones, interpreta qué hacen e indíquelo
función por función
# La función f1 recibe dos argumentos, un string y un prefijo.
# Luego, compara si el prefijo es igual a los primeros caracteres del
string.
# Retorna TRUE si es igual y FALSE en caso contrario.
# La función f2 recibe un vector x y elimina el último elemento del vector.
# Si el vector tiene longitud menor o igual a 1, retorna NULL.
SERGIO SANTOS MENDEZ GONZALEZ 7590-19-14902
# La función f3 recibe dos argumentos, un vector x y un valor y.
# Luego, repite el valor y tantas veces como la longitud del vector x.
# Retorna un vector con el valor y repetido.