Introducción

Parte 1

options(scipen = 999)
data <- read.csv("auto-mpg.csv")

Ejercicio 1

Explore el data frame data usando las funciones summary() y str(). Haga un comentario sobre las diferencias entre los resultados de la columna car_name con el resto de las columnas.

##        No             mpg          cylinders      displacement  
##  Min.   :  1.0   Min.   : 9.00   Min.   :3.000   Min.   : 68.0  
##  1st Qu.:100.2   1st Qu.:17.50   1st Qu.:4.000   1st Qu.:104.2  
##  Median :199.5   Median :23.00   Median :4.000   Median :148.5  
##  Mean   :199.5   Mean   :23.51   Mean   :5.455   Mean   :193.4  
##  3rd Qu.:298.8   3rd Qu.:29.00   3rd Qu.:8.000   3rd Qu.:262.0  
##  Max.   :398.0   Max.   :46.60   Max.   :8.000   Max.   :455.0  
##    horsepower        weight      acceleration     model_year   
##  Min.   : 46.0   Min.   :1613   Min.   : 8.00   Min.   :70.00  
##  1st Qu.: 76.0   1st Qu.:2224   1st Qu.:13.82   1st Qu.:73.00  
##  Median : 92.0   Median :2804   Median :15.50   Median :76.00  
##  Mean   :104.1   Mean   :2970   Mean   :15.57   Mean   :76.01  
##  3rd Qu.:125.0   3rd Qu.:3608   3rd Qu.:17.18   3rd Qu.:79.00  
##  Max.   :230.0   Max.   :5140   Max.   :24.80   Max.   :82.00  
##    car_name        
##  Length:398        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## 'data.frame':    398 obs. of  9 variables:
##  $ No          : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ mpg         : num  28 19 36 28 21 23 15.5 32.9 16 13 ...
##  $ cylinders   : int  4 3 4 4 6 4 8 4 6 8 ...
##  $ displacement: num  140 70 107 97 199 115 304 119 250 318 ...
##  $ horsepower  : int  90 97 75 92 90 95 120 100 105 150 ...
##  $ weight      : int  2264 2330 2205 2288 2648 2694 3962 2615 3897 3755 ...
##  $ acceleration: num  15.5 13.5 14.5 17 15 15 13.9 14.8 18.5 14 ...
##  $ model_year  : int  71 72 82 72 70 75 76 81 75 76 ...
##  $ car_name    : chr  "chevrolet vega 2300" "mazda rx2 coupe" "honda accord" "datsun 510 (sw)" ...

Ejercicio 2

  1. Elimine la columna No del data frame data.

  2. Cambie el nombre de las columnas de data (excepto la columna “mpg”) por los siguientes nombres:

    • mpg (queda igual)
    • cilindros
    • cilindraje
    • potencia
    • peso
    • aceleracion
    • modelo
    • nombre_carro
  3. Imprima los 5 primeras filas de data con la función head().

##   mpg cilindros cilindraje potencia peso aceleracion modelo        nombre_carro
## 1  28         4        140       90 2264        15.5     71 chevrolet vega 2300
## 2  19         3         70       97 2330        13.5     72     mazda rx2 coupe
## 3  36         4        107       75 2205        14.5     82        honda accord
## 4  28         4         97       92 2288        17.0     72     datsun 510 (sw)
## 5  21         6        199       90 2648        15.0     70         amc gremlin

Ejercicio 3

  1. Identifique la clase de data mediante la función class().
## [1] "data.frame"
  1. Identifique la clase de las variables cilindros, aceleración, modelo y nombre_carro mediante la función class().
## [1] "integer"
## [1] "numeric"
## [1] "integer"
## [1] "character"

Ejercicio 4

  1. Defina un data frame con el nombre cilindros_4 en donde se seleccione toda la información de los carros con 4 cilindros.

  2. Imprima las últimas 7 filas de cilindros_4 con la función tail().

##      mpg cilindros cilindraje potencia peso aceleracion modelo
## 386 35.1         4         81       60 1760        16.1     81
## 388 44.6         4         91       67 1850        13.8     80
## 391 32.1         4         98       70 2120        15.5     80
## 392 23.9         4        119       97 2405        14.9     78
## 395 34.5         4        105       70 2150        14.9     79
## 396 38.1         4         89       60 1968        18.8     80
## 397 30.5         4         98       63 2051        17.0     77
##              nombre_carro
## 386      honda civic 1300
## 388   honda civic 1500 gl
## 391    chevrolet chevette
## 392         datsun 200-sx
## 395  plymouth horizon tc3
## 396 toyota corolla tercel
## 397    chevrolet chevette

Ejercicio 5

  1. Calcule la suma de los pesos de todos los carros con 3 cilindros.
## [1] 9594
  1. Calcule la suma de las millas por galón (mpg) de todos los carros con 8 cilindros.
## [1] 1541.2

Ejercicio 6

  1. Agregue a data la columna edad con la edad que en el año 2023 tiene cada carro. Por ejemplo, el primer carro es modelo 71 y por lo tanto su edad es: 2023 - 1971 = 52.

  2. Imprima las 9 primeras filas de data usando la función head()

##    mpg cilindros cilindraje potencia peso aceleracion modelo
## 1 28.0         4        140       90 2264        15.5     71
## 2 19.0         3         70       97 2330        13.5     72
## 3 36.0         4        107       75 2205        14.5     82
## 4 28.0         4         97       92 2288        17.0     72
## 5 21.0         6        199       90 2648        15.0     70
## 6 23.0         4        115       95 2694        15.0     75
## 7 15.5         8        304      120 3962        13.9     76
## 8 32.9         4        119      100 2615        14.8     81
## 9 16.0         6        250      105 3897        18.5     75
##                nombre_carro edad
## 1       chevrolet vega 2300   52
## 2           mazda rx2 coupe   51
## 3              honda accord   41
## 4           datsun 510 (sw)   51
## 5               amc gremlin   53
## 6                audi 100ls   48
## 7               amc matador   47
## 8              datsun 200sx   42
## 9 chevroelt chevelle malibu   48

Ejercicio 7

  1. Agregue la columna precio_actual suponiendo que el precio actual de cada carro es el cilindraje multiplicado por 1500000. Por ejemplo, el primer carro tiene un cilindraje de 140, por lo tanto su precio actual es: 140*1500000 = 210000000.

  2. Imprima las 8 últimas filas de data usando la función tail().

##      mpg cilindros cilindraje potencia peso aceleracion modelo
## 391 32.1         4         98       70 2120        15.5     80
## 392 23.9         4        119       97 2405        14.9     78
## 393 13.0         8        350      155 4502        13.5     72
## 394 16.5         6        168      120 3820        16.7     76
## 395 34.5         4        105       70 2150        14.9     79
## 396 38.1         4         89       60 1968        18.8     80
## 397 30.5         4         98       63 2051        17.0     77
## 398 19.0         6        232      100 2634        13.0     71
##              nombre_carro edad precio_actual
## 391    chevrolet chevette   43     147000000
## 392         datsun 200-sx   45     178500000
## 393  buick lesabre custom   51     525000000
## 394    mercedes-benz 280s   47     252000000
## 395  plymouth horizon tc3   44     157500000
## 396 toyota corolla tercel   43     133500000
## 397    chevrolet chevette   46     147000000
## 398           amc gremlin   52     348000000

Ejercicio 8

  1. Agregue la columna precio_inicial suponiendo que el precio inicial de cada carro es el “precio_actual” llevado al año del modelo con una tasa de descuento del 4% efectivo anual. Por ejemplo, el precio actual del primer carro es 210000000 y tiene una edad de 52 años. Entonces, su precio inicial es: 210000000/(1 + 0.04) ^ 52 = 27320312.

  2. Imprima las 6 primeras filas de data usando la función head()

##   mpg cilindros cilindraje potencia peso aceleracion modelo        nombre_carro
## 1  28         4        140       90 2264        15.5     71 chevrolet vega 2300
## 2  19         3         70       97 2330        13.5     72     mazda rx2 coupe
## 3  36         4        107       75 2205        14.5     82        honda accord
## 4  28         4         97       92 2288        17.0     72     datsun 510 (sw)
## 5  21         6        199       90 2648        15.0     70         amc gremlin
## 6  23         4        115       95 2694        15.0     75          audi 100ls
##   edad precio_actual precio_inicial
## 1   52     210000000       27320312
## 2   51     105000000       14206562
## 3   41     160500000       32144607
## 4   51     145500000       19686236
## 5   53     298500000       37340261
## 6   48     172500000       26253597

Ejercicio 9

Realice el histograma de la variable mpg (millas por galón). Use la función hist() con breaks = 30.

Ejercicio 10

Realice un gráfico de dispersión de la columna cilindraje contra la variable potencia. Haga un comentario sobre el resultado.

Parte 2

data <- read.csv("viviendas.csv")

Ejercicio 1

Explore el data frame data usando las funciones summary() y str().

##    inmueble          parqueaderos        precio              alcobas    
##  Length:264         Min.   :0.0000   Min.   :  42000000   Min.   :1.00  
##  Class :character   1st Qu.:0.0000   1st Qu.: 104000000   1st Qu.:2.00  
##  Mode  :character   Median :1.0000   Median : 216000000   Median :3.00  
##                     Mean   :0.9773   Mean   : 291743594   Mean   :2.75  
##                     3rd Qu.:2.0000   3rd Qu.: 421250000   3rd Qu.:3.00  
##                     Max.   :3.0000   Max.   :1725000000   Max.   :5.00  
##      banos            area        fecha_construc     comuna     
##  Min.   :1.000   Min.   : 30.00   Min.   :1964   Min.   : 2.00  
##  1st Qu.:1.000   1st Qu.: 54.23   1st Qu.:1994   1st Qu.:10.00  
##  Median :2.000   Median : 81.08   Median :2004   Median :12.00  
##  Mean   :2.008   Mean   : 98.41   Mean   :2001   Mean   :11.93  
##  3rd Qu.:2.000   3rd Qu.:132.22   3rd Qu.:2011   3rd Qu.:14.00  
##  Max.   :5.000   Max.   :278.00   Max.   :2018   Max.   :16.00  
##     barrio         
##  Length:264        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## 'data.frame':    264 obs. of  9 variables:
##  $ inmueble      : chr  "Apartamento" "Apartamento" "Casa" "Casa" ...
##  $ parqueaderos  : int  0 1 0 0 1 1 0 0 1 1 ...
##  $ precio        : int  180000000 118000000 90000000 55000000 42000000 73000000 69000000 72000000 104000000 120000000 ...
##  $ alcobas       : int  2 1 4 3 2 3 3 2 3 2 ...
##  $ banos         : int  1 1 2 2 1 1 1 1 2 2 ...
##  $ area          : num  43 53 84 75 43 54 41 40 62 47 ...
##  $ fecha_construc: int  2011 1987 1999 1978 2013 1996 2004 2010 2013 2008 ...
##  $ comuna        : int  11 11 15 10 13 12 10 9 16 10 ...
##  $ barrio        : chr  "Laureles Estadio" "Laureles Estadio" "Guayabal" "La Candelaria" ...

Ejercicio 2

  1. Convierta en factores las siguientes columnas de data:inmueble, parqueaderos, alcobas, banos y comuna. Aplique las funciones summary() y str() a data.
##         inmueble   parqueaderos     precio           alcobas banos  
##  Apartamento:226   0:94         Min.   :  42000000   1: 20   1: 67  
##  Casa       : 38   1:92         1st Qu.: 104000000   2: 54   2:134  
##                    2:68         Median : 216000000   3:165   3: 58  
##                    3:10         Mean   : 291743594   4: 22   4:  4  
##                                 3rd Qu.: 421250000   5:  3   5:  1  
##                                 Max.   :1725000000                  
##                                                                     
##       area        fecha_construc     comuna                barrio  
##  Min.   : 30.00   Min.   :1964   14     :78   El Poblado      :78  
##  1st Qu.: 54.23   1st Qu.:1994   10     :35   Belen           :35  
##  Median : 81.08   Median :2004   16     :35   La Candelaria   :35  
##  Mean   : 98.41   Mean   :2001   7      :26   Robledo         :26  
##  3rd Qu.:132.22   3rd Qu.:2011   11     :25   Laureles Estadio:25  
##  Max.   :278.00   Max.   :2018   9      :20   Buenos Aires    :20  
##                                  (Other):45   (Other)         :45
## 'data.frame':    264 obs. of  9 variables:
##  $ inmueble      : Factor w/ 2 levels "Apartamento",..: 1 1 2 2 1 1 1 1 1 1 ...
##  $ parqueaderos  : Factor w/ 4 levels "0","1","2","3": 1 2 1 1 2 2 1 1 2 2 ...
##  $ precio        : int  180000000 118000000 90000000 55000000 42000000 73000000 69000000 72000000 104000000 120000000 ...
##  $ alcobas       : Factor w/ 5 levels "1","2","3","4",..: 2 1 4 3 2 3 3 2 3 2 ...
##  $ banos         : Factor w/ 5 levels "1","2","3","4",..: 1 1 2 2 1 1 1 1 2 2 ...
##  $ area          : num  43 53 84 75 43 54 41 40 62 47 ...
##  $ fecha_construc: int  2011 1987 1999 1978 2013 1996 2004 2010 2013 2008 ...
##  $ comuna        : Factor w/ 14 levels "2","3","4","5",..: 9 9 13 8 11 10 8 7 14 8 ...
##  $ barrio        : Factor w/ 14 levels "Aranjuez","Belen",..: 9 9 6 8 12 7 8 3 2 8 ...

Ejercicio 3

  1. Cree un factor con el nombre area_factor que agrupe las viviendas dependiendo de su respectiva área en intervalos de 50 metros cuadrados desde 0 hasta 300. Imprima los primeros 6 elementos de area_factor.
## [1] (0,50]   (50,100] (50,100] (50,100] (0,50]   (50,100]
## Levels: (0,50] (50,100] (100,150] (150,200] (200,250] (250,300]
  1. Nombre los niveles creados como “tipo1”,“tipo2”,“tipo3”,“tipo4”,“tipo5”,“tipo6”. Imprima los primeros 6 elementos de area_factor.
## [1] tipo1 tipo2 tipo2 tipo2 tipo1 tipo2
## Levels: tipo1 tipo2 tipo3 tipo4 tipo5 tipo6
  1. Grafique el factor area_factor.

  2. Cree el nuevo factor area_factor_ordered organizando los niveles de area_factor por el número de componentes de menor a mayor. Imprima los primeros 6 elementos de area_factor_ordered.

## [1] tipo1 tipo2 tipo2 tipo2 tipo1 tipo2
## Levels: tipo6 < tipo5 < tipo4 < tipo1 < tipo3 < tipo2
  1. Grafique area_factor_ordered.

  1. La única vivienda tipo6 está en la posición 213 de area_factor. Elimínela, imprima los primeros 6 elementos de area_factor.
## [1] tipo1 tipo2 tipo2 tipo2 tipo1 tipo2
## Levels: tipo1 tipo2 tipo3 tipo4 tipo5 tipo6
  1. Grafique area_factor.

  1. Repita los puntos a. y b. Elimine la vivienda de la posición 213, pero esta vez elimine también su respectivo nivel. Grafique area_factor.

Ejercicio 4

Realice un gráfico circular en el que muestre los porcentajes de cada tipo de vivienda según los resultados del Ejercicio 3.

Ejercicio 5

Realice de nuevo el gráfico circular del Ejercicio 4 pero agregándole el título “Tipos de vivienda”, con los colores en sentido antihorario y con la leyenda al lado superior izquierdo.

Ejercicio 6

  1. Cree un nuevo data frame con el nombre data2 extrayendo de data las columnas comuna,precio,area y fecha_construc en ese orden, . Imprima las seis primeras filas de data2.
##   comuna    precio area fecha_construc
## 1     11 180000000   43           2011
## 2     11 118000000   53           1987
## 3     15  90000000   84           1999
## 4     10  55000000   75           1978
## 5     13  42000000   43           2013
## 6     12  73000000   54           1996
  1. Agregue a data2 la columna edad con la edad de cada vivienda desde su fecha de construcción hasta el presente año 2023. Aplique la función str().
## 'data.frame':    264 obs. of  5 variables:
##  $ comuna        : Factor w/ 14 levels "2","3","4","5",..: 9 9 13 8 11 10 8 7 14 8 ...
##  $ precio        : int  180000000 118000000 90000000 55000000 42000000 73000000 69000000 72000000 104000000 120000000 ...
##  $ area          : num  43 53 84 75 43 54 41 40 62 47 ...
##  $ fecha_construc: int  2011 1987 1999 1978 2013 1996 2004 2010 2013 2008 ...
##  $ edad          : num  12 36 24 45 10 27 19 13 10 15 ...

Ejercicio 7

Realice un gráfico de dispersión de la columna area contra la variable precio. Haga un comentario sobre el resultado.

Ejercicio 8

Realice un gráfico de dispersión de la columna edad contra la variable precio. Haga un comentario sobre el resultado.

Ejercicio 9

Elimine de data2 las observaciones correspondientes a las viviendas con un precio superior a $1,000,000,000 y repita las gráficas de los Ejercicios 7 y 8.

Ejercicio 10

Modifique la columna comuna de data2 para que en vez del número correspondiente a la comuna aparezca: “comuna_2”, “comuna_3”, “comuna_4”…“comuna_16”. Aplique la función summary() a la columna comuna.

##  comuna_2  comuna_3  comuna_4  comuna_5  comuna_6  comuna_7  comuna_8  comuna_9 
##         1         1         3         1         0        26         7        20 
## comuna_10 comuna_11 comuna_12 comuna_13 comuna_14 comuna_15 comuna_16 
##        34        25        14         3        77        15        35