Ejercicios - Introduccion al R: 1. Crear un vector usando rep y seq que contenga los elementos: ‘a’,‘a’, 1, 2, 3, 4, 5, 7, 9, 11

y <- seq(from = 1, to = 11, by = 1)
y
##  [1]  1  2  3  4  5  6  7  8  9 10 11
ind_neg <- c(-6,-8,-10)

y [ind_neg]
## [1]  1  2  3  4  5  7  9 11
x <- rep(x='a', time = 2)
x
## [1] "a" "a"
vector <- c(x, y [ind_neg])
vector
##  [1] "a"  "a"  "1"  "2"  "3"  "4"  "5"  "7"  "9"  "11"
  1. Remover los valores perdidos del vector z <- c(1,2,NA,3,4,NA,NA).
z <- c(1,2,NA,3,4,NA,NA)

Newz <- na.omit(z)
Newz
## [1] 1 2 3 4
## attr(,"na.action")
## [1] 3 6 7
## attr(,"class")
## [1] "omit"
  1. Determinar la clase de todas las columnas del dataframe “iris” que esta incorporado en el R:
# Obtener el nombre de las columnas y el numero de filas y columnas.

datos <- iris 
class(datos) 
## [1] "data.frame"
# Determinar la clase de todas las columnas del dataframe
clase_columnas <- lapply(datos, class)

unlist(clase_columnas, use.names = TRUE)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
##    "numeric"    "numeric"    "numeric"    "numeric"     "factor"
# Obtener el resumen de las variables
summary(datos) 
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
# Las 6 primeras observaciones
head(datos) 
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
# El nombre de las columnas
names(datos) 
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width" 
## [5] "Species"
# El numero de filas y columnas
nrow(datos) ; ncol(datos) 
## [1] 150
## [1] 5
  1. Usando la base de datos anterior, obtener las dos ultimas filas de las dos ultimas columnas.
tail(datos, n = 2) 
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica
ind_neg <- c(-1,-2,-3)

datos [ind_neg]
##     Petal.Width    Species
## 1           0.2     setosa
## 2           0.2     setosa
## 3           0.2     setosa
## 4           0.2     setosa
## 5           0.2     setosa
## 6           0.4     setosa
## 7           0.3     setosa
## 8           0.2     setosa
## 9           0.2     setosa
## 10          0.1     setosa
## 11          0.2     setosa
## 12          0.2     setosa
## 13          0.1     setosa
## 14          0.1     setosa
## 15          0.2     setosa
## 16          0.4     setosa
## 17          0.4     setosa
## 18          0.3     setosa
## 19          0.3     setosa
## 20          0.3     setosa
## 21          0.2     setosa
## 22          0.4     setosa
## 23          0.2     setosa
## 24          0.5     setosa
## 25          0.2     setosa
## 26          0.2     setosa
## 27          0.4     setosa
## 28          0.2     setosa
## 29          0.2     setosa
## 30          0.2     setosa
## 31          0.2     setosa
## 32          0.4     setosa
## 33          0.1     setosa
## 34          0.2     setosa
## 35          0.2     setosa
## 36          0.2     setosa
## 37          0.2     setosa
## 38          0.1     setosa
## 39          0.2     setosa
## 40          0.2     setosa
## 41          0.3     setosa
## 42          0.3     setosa
## 43          0.2     setosa
## 44          0.6     setosa
## 45          0.4     setosa
## 46          0.3     setosa
## 47          0.2     setosa
## 48          0.2     setosa
## 49          0.2     setosa
## 50          0.2     setosa
## 51          1.4 versicolor
## 52          1.5 versicolor
## 53          1.5 versicolor
## 54          1.3 versicolor
## 55          1.5 versicolor
## 56          1.3 versicolor
## 57          1.6 versicolor
## 58          1.0 versicolor
## 59          1.3 versicolor
## 60          1.4 versicolor
## 61          1.0 versicolor
## 62          1.5 versicolor
## 63          1.0 versicolor
## 64          1.4 versicolor
## 65          1.3 versicolor
## 66          1.4 versicolor
## 67          1.5 versicolor
## 68          1.0 versicolor
## 69          1.5 versicolor
## 70          1.1 versicolor
## 71          1.8 versicolor
## 72          1.3 versicolor
## 73          1.5 versicolor
## 74          1.2 versicolor
## 75          1.3 versicolor
## 76          1.4 versicolor
## 77          1.4 versicolor
## 78          1.7 versicolor
## 79          1.5 versicolor
## 80          1.0 versicolor
## 81          1.1 versicolor
## 82          1.0 versicolor
## 83          1.2 versicolor
## 84          1.6 versicolor
## 85          1.5 versicolor
## 86          1.6 versicolor
## 87          1.5 versicolor
## 88          1.3 versicolor
## 89          1.3 versicolor
## 90          1.3 versicolor
## 91          1.2 versicolor
## 92          1.4 versicolor
## 93          1.2 versicolor
## 94          1.0 versicolor
## 95          1.3 versicolor
## 96          1.2 versicolor
## 97          1.3 versicolor
## 98          1.3 versicolor
## 99          1.1 versicolor
## 100         1.3 versicolor
## 101         2.5  virginica
## 102         1.9  virginica
## 103         2.1  virginica
## 104         1.8  virginica
## 105         2.2  virginica
## 106         2.1  virginica
## 107         1.7  virginica
## 108         1.8  virginica
## 109         1.8  virginica
## 110         2.5  virginica
## 111         2.0  virginica
## 112         1.9  virginica
## 113         2.1  virginica
## 114         2.0  virginica
## 115         2.4  virginica
## 116         2.3  virginica
## 117         1.8  virginica
## 118         2.2  virginica
## 119         2.3  virginica
## 120         1.5  virginica
## 121         2.3  virginica
## 122         2.0  virginica
## 123         2.0  virginica
## 124         1.8  virginica
## 125         2.1  virginica
## 126         1.8  virginica
## 127         1.8  virginica
## 128         1.8  virginica
## 129         2.1  virginica
## 130         1.6  virginica
## 131         1.9  virginica
## 132         2.0  virginica
## 133         2.2  virginica
## 134         1.5  virginica
## 135         1.4  virginica
## 136         2.3  virginica
## 137         2.4  virginica
## 138         1.8  virginica
## 139         1.8  virginica
## 140         2.1  virginica
## 141         2.4  virginica
## 142         2.3  virginica
## 143         1.9  virginica
## 144         2.3  virginica
## 145         2.5  virginica
## 146         2.3  virginica
## 147         1.9  virginica
## 148         2.0  virginica
## 149         2.3  virginica
## 150         1.8  virginica
tail(datos [ind_neg], n = 2) 
##     Petal.Width   Species
## 149         2.3 virginica
## 150         1.8 virginica
  1. Crear un vector llamado ventas cuyos elementos sean 21, 13, 18, 19, y 11. Respecto a esto, calcular lo siguiente:
ventas <- c(21, 13, 18, 19, 11)

ventas
## [1] 21 13 18 19 11
# a) ventas mayores a 15.

ventas [ventas > 15] 
## [1] 21 18 19
# b) Ventas mayores a 14 pero menores a 20.

ind <- (ventas > 14) & (ventas < 20) 
ventas[ind]
## [1] 18 19
# c) ventas menores a 16.

ventas [ventas < 16] 
## [1] 13 11
  1. Las cifras de ventas del ejercicio anterior provienen de tiendas de las siguientes ciudades respectivamente: Lima, Piura, Trujillo, Tumbes y Arequipa. Crear un vector llamado ciudad y mostrar las ciudades que tienes ventas:
ventas <- c(21, 13, 18, 19, 11)

ventas
## [1] 21 13 18 19 11
ciudad <- c("Lima", "Piura", "Trujillo", "Tumbes", "Arequipa")

ciudad
## [1] "Lima"     "Piura"    "Trujillo" "Tumbes"   "Arequipa"
list(ventas, ciudad)
## [[1]]
## [1] 21 13 18 19 11
## 
## [[2]]
## [1] "Lima"     "Piura"    "Trujillo" "Tumbes"   "Arequipa"
ventas_ciudad <- list("Lima" = 21,
                 "Piura" = 13,
                 "Trujillo" = 18,
                 "Tumbes" = 19,
                 "Arequipa" = 11)

# a) Ciudades con ventas mayores a 15

ciudad [ventas > 15] 
## [1] "Lima"     "Trujillo" "Tumbes"
# b) Ciudades con ventas menores a 19

ciudad [ventas < 19] 
## [1] "Piura"    "Trujillo" "Arequipa"
# c) Ciudades con ventas mayores a 12 pero menores a 20.

ind <- (ventas > 12) & (ventas < 20) 
ciudad[ind]
## [1] "Piura"    "Trujillo" "Tumbes"
  1. Crear un vector x cuyos valores van de 0 a 10, y un vector y cuyos valores son el cuadrado de los valores del vector x. En base a esto, obtener:
x <- 0:10
x
##  [1]  0  1  2  3  4  5  6  7  8  9 10
y <- x^2
y
##  [1]   0   1   4   9  16  25  36  49  64  81 100
# a) Los valores de x que corresponden a valores de y mayores a 50.
x [y > 50] 
## [1]  8  9 10
# b) Los valores de y que corresponden a valores de x menores que 8 pero mayores que 1.
ind <- (x > 1) & (x < 8) 
y[ind]
## [1]  4  9 16 25 36 49
  1. Construir una matriz m de dimension 5 x 2 con valores del 1 al 10. La primera columna debe tener valores del 1 al 5, y la segunda columna valores del 6 al 10. Construir una matriz n, cuyos vaores sean el cuadrado de los valores de m. Reemplazar la tercera fila de la matriz m con los valores 13 y 18.Mostrar las observaciones de m que son menores o iguales a 10.
# matriz m de dimension 5 x 2 con valores del 1 al 10.
# La primera columna debe tener valores del 1 al 5, y la segunda columna valores del 6 al 10.

m <- matrix(1:10, nrow = 5, ncol = 2, byrow = FALSE)
m
##      [,1] [,2]
## [1,]    1    6
## [2,]    2    7
## [3,]    3    8
## [4,]    4    9
## [5,]    5   10
# Construir una matriz n, cuyos vaores sean el cuadrado de los valores de m.
n <- m^2
n
##      [,1] [,2]
## [1,]    1   36
## [2,]    4   49
## [3,]    9   64
## [4,]   16   81
## [5,]   25  100
# Reemplazar la tercera fila de la matriz m con los valores 13 y 18.

o <- c(0,0,10,0,0)
p <- c(0,0,10,0,0)
q <- cbind(o,p)

nuevo_m <-m + q

nuevo_m
##       o  p
## [1,]  1  6
## [2,]  2  7
## [3,] 13 18
## [4,]  4  9
## [5,]  5 10
# Mostrar las observaciones de m que son menores o iguales a 10.
r <- which(nuevo_m <= 10)
r
## [1]  1  2  4  5  6  7  9 10
  1. Construir una matriz diagonal de tamaño 10 x 10 cuyos elementos son numeros enteros del 11 al 20. Dividir la matriz por 10 y encontrar la traza de la nueva matriz.
matriz <- diag(11:20, nrow = 10, ncol = 10)
matriz
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##  [1,]   11    0    0    0    0    0    0    0    0     0
##  [2,]    0   12    0    0    0    0    0    0    0     0
##  [3,]    0    0   13    0    0    0    0    0    0     0
##  [4,]    0    0    0   14    0    0    0    0    0     0
##  [5,]    0    0    0    0   15    0    0    0    0     0
##  [6,]    0    0    0    0    0   16    0    0    0     0
##  [7,]    0    0    0    0    0    0   17    0    0     0
##  [8,]    0    0    0    0    0    0    0   18    0     0
##  [9,]    0    0    0    0    0    0    0    0   19     0
## [10,]    0    0    0    0    0    0    0    0    0    20
matriz %/% 10
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##  [1,]    1    0    0    0    0    0    0    0    0     0
##  [2,]    0    1    0    0    0    0    0    0    0     0
##  [3,]    0    0    1    0    0    0    0    0    0     0
##  [4,]    0    0    0    1    0    0    0    0    0     0
##  [5,]    0    0    0    0    1    0    0    0    0     0
##  [6,]    0    0    0    0    0    1    0    0    0     0
##  [7,]    0    0    0    0    0    0    1    0    0     0
##  [8,]    0    0    0    0    0    0    0    1    0     0
##  [9,]    0    0    0    0    0    0    0    0    1     0
## [10,]    0    0    0    0    0    0    0    0    0     2
sum(diag(matriz %/% 10))
## [1] 11
  1. Construir los siguientes objetos de R considerando que son datos provenientes de una compañia:
# a) Un vector con valores numuericos: 100, 150, 200, 250 y 350, usando el comando seq.

mis_ventas <- seq(from = 100, to = 350, by = 50)
mis_ventas
## [1] 100 150 200 250 300 350
ind_neg <- c(-5)

mis_ventas [ind_neg]
## [1] 100 150 200 250 350
# b) Un vector con valores caracter: Lima, Huancayo, Ica, Arequipa, Cusco.

ciudades <- c("Lima", "Huancayo", "Ica", "Arequipa", "Cusco")
ciudades
## [1] "Lima"     "Huancayo" "Ica"      "Arequipa" "Cusco"
# c) Un dataframe donde la primera columna tenga valores 2001, 2002, 2003 y 2004, 
# y la segunda columna posea valores 5.2, 3.7, 4.9 y 4.1.

Crecimiento <- data.frame(Año = factor(c("2001", "2002", "2003", "2004")),
                          Porcentaje = c(5.2, 3.7, 4.9, 4.1))
Crecimiento
##    Año Porcentaje
## 1 2001        5.2
## 2 2002        3.7
## 3 2003        4.9
## 4 2004        4.1
# Crear una lista (llamada mi lista) cuyos componentes son los objetos R creados
# con nombres "Ventas", "Ciudad" e "Incremento".

mi_lista <- list(mis_ventas [ind_neg], ciudades, Crecimiento)
mi_lista
## [[1]]
## [1] 100 150 200 250 350
## 
## [[2]]
## [1] "Lima"     "Huancayo" "Ica"      "Arequipa" "Cusco"   
## 
## [[3]]
##    Año Porcentaje
## 1 2001        5.2
## 2 2002        3.7
## 3 2003        4.9
## 4 2004        4.1
  1. De la lista anterior, mostrar las ciudades cuyas ventas sean al menos 200, y mostrar las ventas de las ciudades: Lima, Huancayo y Cusco.
mis_ventas_ciudades <- list("Lima" = 100,
                      "Huancayo" = 150,
                      "Ica" = 200,
                      "Arequipa" = 250,
                      "cusco" = 350)

mis_ventas_ciudades
## $Lima
## [1] 100
## 
## $Huancayo
## [1] 150
## 
## $Ica
## [1] 200
## 
## $Arequipa
## [1] 250
## 
## $cusco
## [1] 350
# a) Mostrar las ciudades cuyas ventas sean al menos 200.
ciudades [mis_ventas <= 200] 
## [1] "Lima"     "Huancayo" "Ica"
# b) Mostrar las ventas de las ciudades: Lima, Huancayo y Cusco.

ventas3ciudades <- list("Lima" = 100,
                            "Huancayo" = 150,
                            "cusco" = 350)

ventas3ciudades
## $Lima
## [1] 100
## 
## $Huancayo
## [1] 150
## 
## $cusco
## [1] 350
  1. Supongamos que la empresa tiene algunos datos sobre costos que son: 50, 80, 140, 190 y 270. Colocar dichos valores en un vector y añadirlo a la lista llamada mi lista.
costos <- c(50, 80, 140, 190, 270)

nuevalista <- list(mis_ventas [ind_neg], ciudades, Crecimiento, costos)
nuevalista
## [[1]]
## [1] 100 150 200 250 350
## 
## [[2]]
## [1] "Lima"     "Huancayo" "Ica"      "Arequipa" "Cusco"   
## 
## [[3]]
##    Año Porcentaje
## 1 2001        5.2
## 2 2002        3.7
## 3 2003        4.9
## 4 2004        4.1
## 
## [[4]]
## [1]  50  80 140 190 270