1. Descarga el fichero de datos tiendas.csv situado en http://gauss.inf.um.es/datos/.

1º Establezco el directorio donde quiero trabajar (pongo uno que no delate mi verdadera identidad)

setwd("C://Users")

2º Descargo el fichero indicando la dirección web y la ruta al fichero de destino.

download.file("http://gauss.inf.um.es/datos/tiendas.csv", paste(getwd(), "tiendas.csv"))

3º Compruebo que se ha creado un fichero con extensión .csv con el mismo nombre.

list.files(pattern = ".csv")
## [1] "normal_tissue.csv"                  
## [2] "normal_tissue.csv.zip"              
## [3] "notas-de-la-clase (1).csv"          
## [4] "notas-de-la-clase.csv"              
## [5] "rna_tissue.csv.zip"                 
## [6] "Seminal_plasma_All_proteins.csv.txt"
## [7] "Sperm_cells_All_proteins.csv.txt"   
## [8] "tiendas.csv"

2. Lee el fichero usando correctamente los argumentos de la función read.table(): header, sep, dec. Guarda los datos en tiendCamp.

tiendCamp <- read.table("tiendas.csv", header = T, sep = ";", dec = ".")

*Alternativa a los ejercicios 1 y 2:

tiendCamp <- read.table("http://gauss.inf.um.es/datos/tiendas.csv", header = T, sep = ";", dec = ".")

La diferencia es que no se descarga el fichero en el ordenador

3. Utiliza funciones como head(), dim(), str() para inspeccionar la estructura de tiendCamp. ¿Qué información contiene ese conjunto de datos?

head(tiendCamp)
##   precio peso altura   marca       uso estaciones capacidad.person.
## 1 349.95  960     96 coleman mochilero  primavera                 2
## 2 449.95 1450    107 coleman mochilero  primavera                 3
## 3 159.95 1700    102   kelty mochilero  primavera                 2
## 4 359.95 2160    107 coleman mochilero  primavera                 3
## 5 149.00 2210    107     rei mochilero  primavera                 2
## 6 399.95 1530    107 coleman mochilero  primavera                 2

Muestra las cabecera y las 6 primeras filas del data.frame.

dim(tiendCamp)
## [1] 90  7

Muestra el número de observaciones (filas) y de variables (columnas) del data.frame.

str(tiendCamp)
## 'data.frame':    90 obs. of  7 variables:
##  $ precio           : num  350 450 160 360 149 ...
##  $ peso             : num  960 1450 1700 2160 2210 1530 2690 1840 3200 850 ...
##  $ altura           : int  96 107 102 107 107 107 117 114 122 97 ...
##  $ marca            : Factor w/ 8 levels "coleman","kelty",..: 1 1 2 1 8 1 3 1 8 1 ...
##  $ uso              : Factor w/ 3 levels "alpinismo","caravana",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ estaciones       : Factor w/ 3 levels "otonho","primavera",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ capacidad.person.: int  2 3 2 3 2 2 3 4 4 1 ...

Muestra el número de observaciones y de variables. Además permite conocer qué clases de variables tenemos y cómo acceder a ellas ($ en este caso).

Parece que la tabla incluye información sobre características de tiendas de campaña: precio, peso, altura, marca, uso, estación para usarla y capacidad en cuanto a número de personas

4. Selecciona las variables cuantitativas (precio, peso y altura) y haz un resumen de las variables. Coméntalo.

apply(tiendCamp[, 1:3], 2, summary)
##         precio peso altura
## Min.      99.5  850   90.0
## 1st Qu.  261.5 1855  102.0
## Median   344.5 2405  112.0
## Mean     349.2 3395  125.8
## 3rd Qu.  400.0 4756  151.5
## Max.     700.0 9554  203.0

Como podemos observar, hay un amplio abanico para elegir en cuanto a:

a) El precio: oscila entre 99.5 y 700, dando la sensación de que está distribuido de forma homogénea, ya que la media y la varianza están próximas la una de la otra.
b) El peso: varía entre los 850 y los 9554, siendo la media de peso 2405, mientras que la mediana es de 3395, lo que podría sugerir que hay algunas tiendas mucho más ligeras que el resto.
c) La altura: oscila entre 90 y 203. La media y la varianza están muy cerca la una de la otra y más bien próximas al primer cuartil, lo que sugiere que la mayor parte de tiendas son relativamente bajas.

5. Para cada variable cuantitativa haz un histograma y añádele la curva normal correspondiente. Para hacer el histograma recuerda usar densidades en lugar de frecuencias.

for(i in 1:3){
    v <- tiendCamp[,i]
    v_name <- colnames(tiendCamp)[i]
    
    hist(v, freq = F, main = paste("Histograma de", v_name), xlab = v_name)
    curve(dnorm(x, mean(v), sd(v)), min(v), max(v), add = T)
}

He empleado un for para evitar repetir código con cada variable cuantitativa. Dentro del for:

1º Asigno a la variable ‘v’ la columna correspondiente a la variable cuantitativa que deseo representar.

2º Asigno a la variable ‘v_name’ el nombre de la columna correspondiente, que sería lo mismo que asignarle el nombre de la variable cuantitativa.

3º Represento un histograma de densidades usando ‘freq = F’.

4º Dibujo la curva normal correspondiente y la añado al histograma de densidades.

Como puede verse, mientras que los precios siguen una distribución normal, los pesos y las alturas se concentran en valores bajos, siendo escasas las tiendas de elevado peso y altura. Se pueden comparar estas conclusiones con las del ejercicio 4: una imagen vale más que mil palabras.

6) Elabora un gráfico de dispersión enfrentando las variables peso y altura. Ese gráfico debe tener:

a) Etiquetar los ejes con nombres adecuados.
b) Poner un título representativo.
c) Rango de la variable peso entre 0 y 10000.
d) Rango de la variable altura entre 80 y 220.
e) Pinta los puntos por colores según la variable uso.
f) Utiliza distintos símbolos en función de la capacidad de la tienda.
g) Busca en la ayuda de la función par() cómo cambiar el tamaño y color del título. Modifícalos a tu gusto.
plot(tiendCamp$altura ~ tiendCamp$peso,
     xlab = "Peso", ylab = "Altura",
     main = "Peso vs Altura de las tiendas de campaña",
     xlim = c(0, 10000),
     ylim = c(80, 220),
     col = tiendCamp$uso,
     pch = tiendCamp$capacidad.person.,
     par(col.main = "red", cex.main = 2))

Cada línea dentro del plot incluye la resolución de cada apartado. Para el apartado f coloreo el título en rojo y duplico su tamaño por defecto.

FIN