# Exercicis de taules (data frames) # Exercici 6 flors # Apartat a mitjanaVariableEspecie <- function(taula, variable, especie){ m <- 0 n <- 0 for (i in 1 : nrow(taula)){ if (taula$Species[i] == especie){ m <- m + taula[i, variable] n <- n + 1 } } m <- m / n return (m) } # Apartat b # extraccio de les especies en un vector identificaEspecies <- function(taula) { especies <- vector() tespecies <- taula$Species for (especie in tespecies){ if (! (especie %in% especies) ){ especies <- c(especies, especie) } } return(especies) } # calcul de la mitjana d'una variable per a una especie # Resolt a l'apartat a) # mitjanaVariableEspecie <- function(taula, variable, especie) # calcul del nou data frame nouDataFrame <- function(taula) { especies <- identificaEspecies(taula) variables <- names(taula) variables <- variables[0:(length(variables) - 1)] nouDF <- data.frame() for (especie in especies){ fila <- data.frame(especie) for (variable in variables){ m <- mitjanaVariableEspecie(taula, variable, especie) fila[variable] <- c(m) } nouDF <- rbind(nouDF, fila) } return (nouDF) } # programa principal iris <- read.table("flors.dades", header=T, stringsAsFactor=FALSE) print.data.frame(iris) cat("variable: Petal.Width \nespecie: setosa \n") m <- mitjanaVariableEspecie(iris, "Petal.Width", "setosa") cat("mitjana : ", m, "\n") cat("\n") cat("variable: Petal.Length \nespecie: versicolor \n") m <- mitjanaVariableEspecie(iris, "Petal.Length", "versicolor") cat("mitjana variable espècie : ", m, "\n") cat("\n") novaTaula <- nouDataFrame(iris) print.data.frame(novaTaula) cat("\n")