Está en la página 1de 6

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 data.frame, 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 (is.numeric(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 <- data.frame(


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 data.frame")
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 (!is.null(conexion)) {
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 mi.orden 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 (!is.numeric(x)) {
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 <- data.frame(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.

También podría gustarte