data(iris) # ignorar esta funcion, solo es para separar la salida en pantalla pregunta <- function(n){ cat("\n") cat(paste(rep("*", 40), sep = "", collapse = "")) cat(paste(" Pregunta", n, "")) cat(paste(rep("*", 40), sep = "", collapse = "")) cat("\n") } #-------------------------------------------------------- # Pregunta 1 #-------------------------------------------------------- pregunta(1) cat("\nFrecuencia y frecuencia relativa:\n") freq.flores <- table(iris$Species) print(freq.flores) # setosa versicolor virginica # 50 50 50 rel.freq <- freq.flores/nrow(iris) print(rel.freq) # setosa versicolor virginica # 0.3333333 0.3333333 0.3333333 #-------------------------------------------------------- # Pregunta 2 #-------------------------------------------------------- pregunta(2) cat("\nPromedio de largo de petalo por especie:\n") prom.largo.petalo <- tapply(iris$Petal.Length, iris$Species, mean) print(prom.largo.petalo) # setosa versicolor virginica # 1.462 4.260 5.552 #-------------------------------------------------------- # Pregunta 3 #-------------------------------------------------------- pregunta(3) cat("\nNumero de filas:\n") print(nrow(iris)) cat("\nRango de datos:\n") print(range(iris$Sepal.Length)) # una posible lista de puntos de "corte" de los datos cortes <- seq(4, 8, by = 0.5) sepal.cut <- cut(iris$Sepal.Length, cortes, right = FALSE) # dist. de frecuencia pedida cat("\nDistribucion de frecuencia:\n") freq.sepal <- table(sepal.cut) print(freq.sepal) cat("\nLas instrucciones para generar los dos graficos estan en el archivo .R\n") # descomenten la siguiente linea para dejar los graficos en archivos .png #png() # usando barplot y la distribucion calculada en la pregunta anterior barplot(freq.sepal, ylim = c(0, 35), main="Distribucion de largo de sepalo", ylab = "frecuencia", xlab = "largo de sepalo [cm]") # ahora usando hist hist(iris$Sepal.Length, right = FALSE, main="Distribucion de largo de sepalo", ylab = "frecuencia", xlab = "largo de sepalo [cm]") #-------------------------------------------------------- # Pregunta 4: Ojo que ahora trabajaremos con el ancho de petalos #-------------------------------------------------------- pregunta(4) # una posible lista de puntos de "corte" de los datos cat("\nRango de datos:\n") print(range(iris$Petal.Width)) cortes2 <- seq(0, 3, by = 0.25) petal.cut <- cut(iris$Petal.Width, cortes2, right = FALSE) freq.petal <- table(petal.cut) # descomenten la siguiente linea para dejar los graficos en archivos .png #png() # generar grafico pedido acum.petal <- c(0, cumsum(freq.petal)) plot(cortes2, acum.petal, main = "Dist. de frecuencia acumulada del ancho de petalo", ylab = "frec. acumulada", xlab = "ancho de petalo [cm]") lines(cortes2, acum.petal) cat("\nLas instrucciones para generar el grafico estan en el archivo .R\n") #-------------------------------------------------------- # Pregunta 5 #-------------------------------------------------------- pregunta(5) plot(iris$Sepal.Length, iris$Sepal.Width, xlab = "largo de sepalo", ylab = "ancho de sepalo") print(cov(iris$Sepal.Length, iris$Sepal.Width)) print(cor(iris$Sepal.Length, iris$Sepal.Width)) plot(iris$Petal.Length, iris$Petal.Width, xlab = "largo de petalo", ylab = "ancho de petalo") print(cov(iris$Petal.Length, iris$Petal.Width)) print(cor(iris$Petal.Length, iris$Petal.Width)) cat("\nLas instrucciones para generar los 2 graficos estan en el archivo .R\n") #-------------------------------------------------------- # Pregunta 6 #-------------------------------------------------------- pregunta(6) cat("\nLa instruccion para generar el grafico esta en el archivo .R\n") boxplot(Sepal.Length ~ Species, data = iris, ylab = "largo del sepalo [cm]") #-------------------------------------------------------- # Pregunta 7 #-------------------------------------------------------- pregunta(7) virginica <- iris[iris$Species == "virginica",] promedios <- NULL medianas <- NULL varianzas <- NULL desviaciones <- NULL # calculando valores pedidos for (col in colnames(virginica)){ if (col != "Species"){ promedios <- c(promedios, mean(virginica[[col]])) medianas <- c(medianas, median(virginica[[col]])) varianzas <- c(varianzas, var(virginica[[col]])) desviaciones <- c(desviaciones, sd(virginica[[col]])) } } # juntando todo en un data frame (opcional) df <- data.frame(promedios, medianas, varianzas, desviaciones) row.names(df) <- colnames(virginica)[1:4] print(df)