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"
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"
# 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
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
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
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"
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
# 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
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
# 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
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
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