📝 Ejercicios recopilados
Recopilación de los ejercicios planteados a lo largo del manual. Vuelve por aquí si quieres cuando acabes las lecciones para repasar aquellos ejercicios que más te hayan costado.
Instalación
Scripts usados:
- script02.R: instalación de R. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script02.R
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: abre
R Studio
y en tu consola (parte inferior de tu pantalla) asigna los valores 2
y 5
a dos variables a
y b
. Tras asignarles valores, multiplica los números en consola (haz click en la flecha para la solución propuesta).
- Solución:
# Para poner comentarios en el código se usa #
# Definición de variables
a <- 2
b <- 5
# Multiplicación
a * b
## [1] 10
📝Ejercicio 2: modifica el código inferior para definir dos variables
c
y d
, con valores 3
y -1
, y calcular la división c/d
(haz click en la flecha para la solución propuesta).
# Definición de variables
c <-
d <-
# Operación (división)
c ? d
- Solución:
# Definición de variables
c <- 3
d <- -1
# División
c / d
## [1] -3
📝Ejercicio 3: repite el ejercicio 1 pero ahora guarda el resultado de la multiplicación final en una variable
c
. Para ver el resultado guardado en c
escribe dicha variable en consola (haz click en la flecha para la solución propuesta).
- Solución:
# Variables
a <- 2
b <- 5
# Resultado
c <- a * b
# Muestro en consola
c
## [1] 10
WARNING:
No hace falta gastar una línea por cada orden que quieras ejecutar. Tampoco necesitas guardar cada paso intermedio que realices. Cuidado con la memoria: cada asignación que hagas es una variable guardada que consume recursos en tu ordenador.
Primeros pasos
Scripts usados:
- script04.R: primeros pasos. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script04.R
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: asigna ahora los valores
1
, -2
, 3
a tres variables a
, b
y c
distintas, y calcula la raíz cuadrada de cada uno (haz click en la flecha para la solución propuesta).
- Solución:
# Variables
a <- 1
b <- -2
c <- 3
# Resultado
sqrt(a)
## [1] 1
sqrt(b)
## [1] NaN
sqrt(c)
## [1] 1.732051
📝Ejercicio 2: calcula en consola la suma de 3 más 4, y todo ello multiplicado por 10, y asígnalo a una variable
x
(haz click en la flecha para la solución propuesta). Imprime el valor por consola
- Solución:
# Asignamos
x <- (3 + 4) * 10
# Imprimimos
x
## [1] 70
📝Ejercicio 3: asigna un valor positivo a
x
y calcula su raíz cuadrada; asigna otro negativo y calcula su valor absoluto con la función abs()
(haz click en la flecha para la solución propuesta).
- Solución:
# Raíz cuadrada
x <- 73 # por ejemplo
sqrt(x)
## [1] 8.544004
# Valor absoluto
y <- -19 # por ejemplo
abs(y)
## [1] 19
CONSEJO:
Las órdenes sqrt(x)
y abs(y)
se llaman funciones, y la variable que tienen entre paréntesis se llama argumento de la función: una variable que toma de entrada la función y con la que opera internamente.
📝Ejercicio 4: usando la variable
x
ya definida, completa/modifica el código inferior para guardar en una nueva variable z
el resultado guardado en x
menos 5 (haz click en la flecha para la solución propuesta).
z <- ? - ?
z
- Solución:
z <- x - 5
z
## [1] 68
📝Ejercicio 5: usando las variables
x
e y
ya definidas, calcula el máximo de ambas (función max()
), y guárdalo en una nueva variable t
. (haz click en la flecha para la solución propuesta).
- Solución:
t <- max(x, y)
t
## [1] 73
WARNING:
No hace falta gastar una línea por cada orden que quieras ejecutar. Tampoco necesitas guardar cada paso intermedio que realices. Cuidado con la memoria: cada asignación que hagas es una variable guardada que consume recursos en tu ordenador.
0.1 Variables numéricas y de texto
Scripts usados:
- script05.R: variables numéricas y caracteres. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script05.R
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: define una variable
edad
que guarde tu edad y otra nombre
con tu nombre.
- Solución:
edad <- 32 # tipo numeric
nombre <- "Javier" # tipo caracter
edad
## [1] 32
nombre
## [1] "Javier"
📝Ejercicio 2: define otra variable con tus apellidos y junta las variables
nombre
y apellidos
en una sola cadena de texto que guardes en nombre_completo
.
- Solución:
library(glue)
# Apellidos
apellidos <- "Álvarez Liébana"
# Pegamos
nombre_completo <- glue("{nombre} {apellidos}")
nombre_completo
## Javier Álvarez Liébana
# Otra forma
nombre_completo <- paste(nombre, apellidos)
nombre_completo
## [1] "Javier Álvarez Liébana"
📝Ejercicio 3: define dos variables numéricas y realiza la suma de ambas. Obtén con
class()
la clase de dicha variable suma
- Solución:
# Definimos dos variables numéricas
a <- 1
b <- -2
a + b
## [1] -1
class(a + b)
## [1] "numeric"
📝Ejercicio 4: construye una frase que diga «Hola, me llamo … y tengo … años».
- Solución:
edad <- 32
glue("Hola, me llamo {nombre_completo} y tengo {edad} años")
## Hola, me llamo Javier Álvarez Liébana y tengo 32 años
📝Ejercicio 5: define una cadena de texto con
"mi código postal es 28045"
. Calcula la longitud de la cadena y extrae la subcadena del lugar 3 al 17 con str_sub()
del paquete stringr (guarda dicha subcadena en una variable y
)
- Solución:
## [1] " código postal "
📝Ejercicio 6: con la subcadena
y
del ejercicio anterior, elimina los espacios solo de la izquierda y convierte a mayúsculas
- Solución:
# Todo en una línea
str_to_upper(str_trim(y, side = "left"))
## [1] "CÓDIGO POSTAL "
# Paso a paso
z <- str_trim(y, side = "left")
str_to_upper(z)
## [1] "CÓDIGO POSTAL "
📝Ejercicio 7: con la cadena
x
original, sustituye la subcadena “código postal” por “cp”.
- Solución:
str_sub(x, 4, 16) <- "cp"
0.2 Vectores
Scripts usados:
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: modifica el código inferior para crear un vector de nombre
vector_num
que contenga los números 1, 5 y -7.
# Vector de números
vector_num <- c(1)
vector_num
- Solución:
# Vector de números
vector_num <- c(1, 5, -7)
vector_num
## [1] 1 5 -7
📝Ejercicio 2: define un vector que contenga los números 1, 10, -1 y 2, y guárdalo en una variable llamada
vector_num
.
- Solución:
# Vector de números
vector_num <- c(1, 10, -1, 2)
vector_num
## [1] 1 10 -1 2
📝Ejercicio 3: obtén la longitud del vector anterior
vector_num
.
- Solución:
# Longitud del vector
length(vector_num)
## [1] 4
📝Ejercicio 4: crea un vector con las palabras “Hola”, “me”, “llamo” (y tu nombre y apellidos), y pega luego sus elementos de forma que la frase esté correctamente escrita en castellano. Tras hacerlo, añade “y tengo 30 años”.
- Solución:
# Definiendo el vector
vector_char <- c("Hola", "me", "llamo", "Javier",
"Álvarez", "Liébana")
# Pegamos
frase <- paste(vector_char, collapse = " ")
frase
## [1] "Hola me llamo Javier Álvarez Liébana"
# Añadimos frase
glue("{frase} y tengo 30 años.")
## Hola me llamo Javier Álvarez Liébana y tengo 30 años.
# Otra forma
paste0(frase, " y tengo 30 años.")
## [1] "Hola me llamo Javier Álvarez Liébana y tengo 30 años."
# Otra forma
paste(frase, "y tengo 30 años.")
## [1] "Hola me llamo Javier Álvarez Liébana y tengo 30 años."
📝Ejercicio 5: el código inferior crea una secuencia de números, que empieza en
-1
, que acaba en 32
, y que va saltando de 2 en 2. Modíficalo para que haga el salto de 3 en 3 y guárdalo en una variable llamada secuencia
seq(-1, 32, by = 2)
- Solución:
secuencia <- seq(-1, 32, by = 3)
secuencia
## [1] -1 2 5 8 11 14 17 20 23 26 29 32
length(secuencia) # longitud de la secuencia
## [1] 12
📝Ejercicio 6: crea una secuencia de números, que empiece en
-1
, que acabe en 32
, y que tenga longitud 12.
- Solución:
secuencia <- seq(-1, 32, l = 12)
secuencia
## [1] -1 2 5 8 11 14 17 20 23 26 29 32
length(secuencia) # longitud de la secuencia
## [1] 12
📝Ejercicio 7: crea una secuencia que empiece en 1 y recorra todos los naturales hasta el 10. Después crea otra secuencia de longitud 7 que todos los números sean
3
.
- Solución:
1:10
## [1] 1 2 3 4 5 6 7 8 9 10
rep(3, 7) # secuencia repetida
## [1] 3 3 3 3 3 3 3
📝Ejercicio 8: crea una secuencia que repita 5 veces el patrón
1, 2, 3
. Después crea otra que repita dicho patrón pero de forma intercalada, con 5 veces 1
, después 5 veces 2
y después 5 veces 3
.
- Solución:
## [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
📝Ejercicio 9: crea una variable
x <- c("oso pardo", "oso polar", "ballena", "grillo", "oso panda", "perro")
. Haciendo uso de str_length()
calcula la longitud de cada cadena de texto. Haciendo uso de str_detect()
detecta los animales que son un oso.
- Solución:
x <- c("oso pardo", "Oso polar", "ballena", "grillo", "OSO panda", "perro")
str_length(x) # longitud
## [1] 9 9 7 6 9 5
# OJO! antes hay que pasar todo a mayúscula o minúscula, nos da igual que sea oso, OSO, Oso, etc
str_detect(str_to_lower(x), "oso")
## [1] TRUE TRUE FALSE FALSE TRUE FALSE
0.3 Operaciones con vectores
Scripts usados:
- script07.R: operaciones con vectores. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script07.R
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: define el vector
x
como la concatenación de los números 1, 10, -1 y 2, y calcula su suma.
- Solución:
## [1] 12
📝Ejercicio 2: define otro vector
y
que contenga los números 5, -7, 8, -3
, y haz la suma de x
e y
.
- Solución:
# Vector de números
y <- c(5, -7, 8, -3)
# Suma
x + y
## [1] 6 3 7 -1
📝Ejercicio 3: calcula el número de elementos mayores que 0 del resultado de la suma de
x + y
.
- Solución:
sum((x + y) > 0)
## [1] 3
# Otra forma
suma <- x + y
sum(suma > 0)
## [1] 3
📝Ejercicio 4: calcula la versión ordenada del vector
x
.
- Solución:
# Ordenamos el vector (con sort)
sort(x)
## [1] -1 1 2 10
# Ordenamos el vector (con order)
x[order(x)]
## [1] -1 1 2 10
📝Ejercicio 5: encuentra del vector
x
original el lugar (el índice) que ocupa su mínimo y su máximo.
- Solución:
## [1] 2
which.min(x)
## [1] 3
📝Ejercicio 6: encuentra del vector
x
los elementos mayores que 1 y menores que 7. Encuentra una forma de averiguar si todos los elementos son o no positivos.
- Solución:
# Vector lógico: mayores que 1 y menores que 7
x > 1 & x < 7
## [1] FALSE FALSE FALSE TRUE
# ¿Son todos positivos? Mira también any()
all(x > 0)
## [1] FALSE
📝Ejercicio 7: define el vector
c(-1, 0, 4, 5, -2)
, calcula la raíz cuadrada del vector y determina que lugares son ausente de tipo NaN
.
- Solución:
# Vector
z <- c(-1, 0, 4, 5, -2)
# ¿Cuáles son ausentes tras aplicar la raíz cuadrada?
is.nan(sqrt(z))
## [1] TRUE FALSE FALSE FALSE TRUE
📝Ejercicio 8: define el vector de los primeros números impares (hasta el 21) y extrae los elementos que ocupan los lugares 1, 4, 5, 8. Elimina del vector el segundo elemento
- Solución:
# Vector de impares (de 1 a 21 saltando de dos en dos)
x <- seq(1, 21, by = 2)
# Seleccionamos elementos
x[c(1, 4, 5, 8)]
## [1] 1 7 9 15
# Eliminamos elementos
y <- x[-2]
y
## [1] 1 5 7 9 11 13 15 17 19 21
📝Ejercicio 9: define una cadena de caracteres
texto <- c("oso polar", "oso pardo", "salamandra", "buho", "lechuza", "oso malayo")
. Usa str_count()
para contabilizar el número de osos. Usa str_starts()
para saber que elemento del vector es un oso o no. Obten la longitud de cada cadena. Sustituye en todas las cadenas la o
por *
- Solución:
texto <- c("oso polar", "oso pardo", "salamandra", "buho", "lechuza", "oso malayo")
# Cuenta el número de cadenas que contienen la palabra "oso"
str_count(texto, "oso")
## [1] 1 1 0 0 0 1
# Nos devuelve TRUE en las cadenas que empiecen por "oso"
str_starts(texto, "oso")
## [1] TRUE TRUE FALSE FALSE FALSE TRUE
str_ends(texto, "oso") # devuelve todo FALSE
## [1] FALSE FALSE FALSE FALSE FALSE FALSE
# Longitud de cada cadena
str_length(texto)
## [1] 9 9 10 4 7 10
# Sustituimos en todas las oes por *
str_replace_all(texto, "o", "*")
## [1] "*s* p*lar" "*s* pard*" "salamandra" "buh*" "lechuza"
## [6] "*s* malay*"
0.4 Fechas
Scripts usados:
- script08.R: operaciones con vectores. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script08.R
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: obten la fecha de hoy, define la fecha de tu cumpleaños, y calcula la diferencia de días.
- Solución:
library(lubridate)
# Hoy
hoy <- today()
# Cumple (diferentes formatos de entrada)
cumple <- as_date("1989-09-10") # por defecto
cumple <- as_date("10-09-1989", format = "%d-%m-%Y")
# Diferencia
hoy - cumple
## Time difference of 12058 days
📝Ejercicio 2: define la fecha de tu cumpleaños y determina si fue año bisiesto. Súmale 1-2-3-4-5 semanas.
- Solución:
## [1] FALSE
# Sumamos semanaes
cumple + weeks(1:5)
## [1] "1989-09-17" "1989-09-24" "1989-10-01" "1989-10-08" "1989-10-15"
📝Ejercicio 3: extrae el mes, año y día de la semana de tu cumpleaños
- Solución:
# Mes
month(cumple)
## [1] 9
# Año
year(cumple)
## [1] 1989
# wday
wday(cumple, week_start = 1)
## [1] 7
wday(cumple, week_start = 1, label = TRUE)
## [1] Sun
## Levels: Mon < Tue < Wed < Thu < Fri < Sat < Sun
📝Ejercicio 4: calcula los días que han pasado desde la fecha de tu nacimiento
- Solución:
## [1] "12058S"
0.5 Datos estructurados
Scripts usados:
- script09.R: datos estructurados. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script09.R
(haz click en las flechas para ver soluciones)
Ejercicio 1: modifica el código para definir una matriz
x
de ceros de 3 filas y 7 columnas.
# Matriz
x <- matrix(0, nrow = 2, ncol = 3)
x
- Solución:
# Matriz
x <- matrix(0, nrow = 3, ncol = 7)
x
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 0 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0 0
Ejercicio 2: a la matriz anterior, suma un 1 a cada número de la matriz y divide el resultado entre 5.
- Solución:
(x + 1) / 5
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 0.2 0.2 0.2 0.2 0.2 0.2 0.2
## [2,] 0.2 0.2 0.2 0.2 0.2 0.2 0.2
## [3,] 0.2 0.2 0.2 0.2 0.2 0.2 0.2
Ejercicio 3: tras definir la matriz
x
calcula su transpuesta y obtén sus dimensiones
- Solución:
# Transpuesta
t(x)
## [,1] [,2] [,3]
## [1,] 0 0 0
## [2,] 0 0 0
## [3,] 0 0 0
## [4,] 0 0 0
## [5,] 0 0 0
## [6,] 0 0 0
## [7,] 0 0 0
## [1] 7 3
## [1] 3
## [1] 7
Ejercicio 4: el siguiente código define una matriz de dimensiones
4 x 3
y calcula la suma por columnas. Modifica el código para que realice la suma por filas.
# Matriz
matriz <- matrix(1:12, nrow = 4)
# Suma por columnas
apply(matriz, MARGIN = 2, FUN = "sum")
## [1] 10 26 42
- Solución:
## [1] 15 18 21 24
Ejercicio 5: con la matriz anterior definida como
matrix(1:12, nrow = 4)
, calcula la media de todos los elementos, la media de cada fila y la media de cada columna.
- Solución:
## [1] 6.5
# Media por filas (MARGIN = 1 ya que es una operación por filas)
apply(matriz, MARGIN = 1, FUN = "mean")
## [1] 5 6 7 8
# Media por filas (MARGIN = 2 ya que es una operación por filas)
apply(matriz, MARGIN = 2, FUN = "mean")
## [1] 2.5 6.5 10.5
Ejercicio 6: el
data.frame
llamado airquality
, del paquete {datasets}
, contiene variables de la calidad del aire de la ciudad de Nueva York desde mayo hasta septiembre de 1973. Obtén el nombre de las variables.
- Solución:
## [1] "Ozone" "Solar.R" "Wind" "Temp" "Month" "Day"
Ejercicio 7: obtén las dimensiones del conjunto de datos. ¿Cuántas variables hay? ¿Cuántos días se han medido?
- Solución:
# Dimensiones
dim(airquality)
## [1] 153 6
nrow(airquality)
## [1] 153
ncol(airquality)
## [1] 6
Ejercicio 8: modifica el código inferior para que nos filtre solo los datos del mes de julio.
# Filtramos filas
filtro_fila <- subset(., subset = Month < 6)
filtro_fila
- Solución:
# Filtramos filas
filtro_fila <- subset(airquality, subset = Month == 7)
filtro_fila
## Ozone Solar.R Wind Temp Month Day
## 62 135 269 4.1 84 7 1
## 63 49 248 9.2 85 7 2
## 64 32 236 9.2 81 7 3
## 65 NA 101 10.9 84 7 4
## 66 64 175 4.6 83 7 5
## 67 40 314 10.9 83 7 6
## 68 77 276 5.1 88 7 7
## 69 97 267 6.3 92 7 8
## 70 97 272 5.7 92 7 9
## 71 85 175 7.4 89 7 10
## 72 NA 139 8.6 82 7 11
## 73 10 264 14.3 73 7 12
## 74 27 175 14.9 81 7 13
## 75 NA 291 14.9 91 7 14
## 76 7 48 14.3 80 7 15
## 77 48 260 6.9 81 7 16
## 78 35 274 10.3 82 7 17
## 79 61 285 6.3 84 7 18
## 80 79 187 5.1 87 7 19
## 81 63 220 11.5 85 7 20
## 82 16 7 6.9 74 7 21
## 83 NA 258 9.7 81 7 22
## 84 NA 295 11.5 82 7 23
## 85 80 294 8.6 86 7 24
## 86 108 223 8.0 85 7 25
## 87 20 81 8.6 82 7 26
## 88 52 82 12.0 86 7 27
## 89 82 213 7.4 88 7 28
## 90 50 275 7.4 86 7 29
## 91 64 253 7.4 83 7 30
## 92 59 254 9.2 81 7 31
Ejercicio 9: del conjunto
airquality
selecciona aquellos datos que no sean ni de julio ni de agosto.
- Solución:
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
## 11 7 NA 6.9 74 5 11
## 12 16 256 9.7 69 5 12
## 13 11 290 9.2 66 5 13
## 14 14 274 10.9 68 5 14
## 15 18 65 13.2 58 5 15
## 16 14 334 11.5 64 5 16
## 17 34 307 12.0 66 5 17
## 18 6 78 18.4 57 5 18
## 19 30 322 11.5 68 5 19
## 20 11 44 9.7 62 5 20
## 21 1 8 9.7 59 5 21
## 22 11 320 16.6 73 5 22
## 23 4 25 9.7 61 5 23
## 24 32 92 12.0 61 5 24
## 25 NA 66 16.6 57 5 25
## 26 NA 266 14.9 58 5 26
## 27 NA NA 8.0 57 5 27
## 28 23 13 12.0 67 5 28
## 29 45 252 14.9 81 5 29
## 30 115 223 5.7 79 5 30
## 31 37 279 7.4 76 5 31
## 32 NA 286 8.6 78 6 1
## 33 NA 287 9.7 74 6 2
## 34 NA 242 16.1 67 6 3
## 35 NA 186 9.2 84 6 4
## 36 NA 220 8.6 85 6 5
## 37 NA 264 14.3 79 6 6
## 38 29 127 9.7 82 6 7
## 39 NA 273 6.9 87 6 8
## 40 71 291 13.8 90 6 9
## 41 39 323 11.5 87 6 10
## 42 NA 259 10.9 93 6 11
## 43 NA 250 9.2 92 6 12
## 44 23 148 8.0 82 6 13
## 45 NA 332 13.8 80 6 14
## 46 NA 322 11.5 79 6 15
## 47 21 191 14.9 77 6 16
## 48 37 284 20.7 72 6 17
## 49 20 37 9.2 65 6 18
## 50 12 120 11.5 73 6 19
## 51 13 137 10.3 76 6 20
## 52 NA 150 6.3 77 6 21
## 53 NA 59 1.7 76 6 22
## 54 NA 91 4.6 76 6 23
## 55 NA 250 6.3 76 6 24
## 56 NA 135 8.0 75 6 25
## 57 NA 127 8.0 78 6 26
## 58 NA 47 10.3 73 6 27
## 59 NA 98 11.5 80 6 28
## 60 NA 31 14.9 77 6 29
## 61 NA 138 8.0 83 6 30
## 124 96 167 6.9 91 9 1
## 125 78 197 5.1 92 9 2
## 126 73 183 2.8 93 9 3
## 127 91 189 4.6 93 9 4
## 128 47 95 7.4 87 9 5
## 129 32 92 15.5 84 9 6
## 130 20 252 10.9 80 9 7
## 131 23 220 10.3 78 9 8
## 132 21 230 10.9 75 9 9
## 133 24 259 9.7 73 9 10
## 134 44 236 14.9 81 9 11
## 135 21 259 15.5 76 9 12
## 136 28 238 6.3 77 9 13
## 137 9 24 10.9 71 9 14
## 138 13 112 11.5 71 9 15
## 139 46 237 6.9 78 9 16
## 140 18 224 13.8 67 9 17
## 141 13 27 10.3 76 9 18
## 142 24 238 10.3 68 9 19
## 143 16 201 8.0 82 9 20
## 144 13 238 12.6 64 9 21
## 145 23 14 9.2 71 9 22
## 146 36 139 10.3 81 9 23
## 147 7 49 10.3 69 9 24
## 148 14 20 16.6 63 9 25
## 149 30 193 6.9 70 9 26
## 150 NA 145 13.2 77 9 27
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30
Ejercicio 10: modifica el siguiente código para quedarte solo con las variable
Ozone
y Temp
.
- Solución:
## Ozone Temp
## 1 41 67
## 2 36 72
## 3 12 74
## 4 18 62
## 5 NA 56
## 6 28 66
## 7 23 65
## 8 19 59
## 9 8 61
## 10 NA 69
## 11 7 74
## 12 16 69
## 13 11 66
## 14 14 68
## 15 18 58
## 16 14 64
## 17 34 66
## 18 6 57
## 19 30 68
## 20 11 62
## 21 1 59
## 22 11 73
## 23 4 61
## 24 32 61
## 25 NA 57
## 26 NA 58
## 27 NA 57
## 28 23 67
## 29 45 81
## 30 115 79
## 31 37 76
## 32 NA 78
## 33 NA 74
## 34 NA 67
## 35 NA 84
## 36 NA 85
## 37 NA 79
## 38 29 82
## 39 NA 87
## 40 71 90
## 41 39 87
## 42 NA 93
## 43 NA 92
## 44 23 82
## 45 NA 80
## 46 NA 79
## 47 21 77
## 48 37 72
## 49 20 65
## 50 12 73
## 51 13 76
## 52 NA 77
## 53 NA 76
## 54 NA 76
## 55 NA 76
## 56 NA 75
## 57 NA 78
## 58 NA 73
## 59 NA 80
## 60 NA 77
## 61 NA 83
## 62 135 84
## 63 49 85
## 64 32 81
## 65 NA 84
## 66 64 83
## 67 40 83
## 68 77 88
## 69 97 92
## 70 97 92
## 71 85 89
## 72 NA 82
## 73 10 73
## 74 27 81
## 75 NA 91
## 76 7 80
## 77 48 81
## 78 35 82
## 79 61 84
## 80 79 87
## 81 63 85
## 82 16 74
## 83 NA 81
## 84 NA 82
## 85 80 86
## 86 108 85
## 87 20 82
## 88 52 86
## 89 82 88
## 90 50 86
## 91 64 83
## 92 59 81
## 93 39 81
## 94 9 81
## 95 16 82
## 96 78 86
## 97 35 85
## 98 66 87
## 99 122 89
## 100 89 90
## 101 110 90
## 102 NA 92
## 103 NA 86
## 104 44 86
## 105 28 82
## 106 65 80
## 107 NA 79
## 108 22 77
## 109 59 79
## 110 23 76
## 111 31 78
## 112 44 78
## 113 21 77
## 114 9 72
## 115 NA 75
## 116 45 79
## 117 168 81
## 118 73 86
## 119 NA 88
## 120 76 97
## 121 118 94
## 122 84 96
## 123 85 94
## 124 96 91
## 125 78 92
## 126 73 93
## 127 91 93
## 128 47 87
## 129 32 84
## 130 20 80
## 131 23 78
## 132 21 75
## 133 24 73
## 134 44 81
## 135 21 76
## 136 28 77
## 137 9 71
## 138 13 71
## 139 46 78
## 140 18 67
## 141 13 76
## 142 24 68
## 143 16 82
## 144 13 64
## 145 23 71
## 146 36 81
## 147 7 69
## 148 14 63
## 149 30 70
## 150 NA 77
## 151 14 75
## 152 18 76
## 153 20 68
Ejercicio 11: del conjunto
airquality
selecciona los datos de temperatura y viento de agosto.
- Solución:
# Todo de una vez
filtro <- subset(airquality, subset = Month == 8,
select = c("Temp", "Wind"))
filtro
## Temp Wind
## 93 81 6.9
## 94 81 13.8
## 95 82 7.4
## 96 86 6.9
## 97 85 7.4
## 98 87 4.6
## 99 89 4.0
## 100 90 10.3
## 101 90 8.0
## 102 92 8.6
## 103 86 11.5
## 104 86 11.5
## 105 82 11.5
## 106 80 9.7
## 107 79 11.5
## 108 77 10.3
## 109 79 6.3
## 110 76 7.4
## 111 78 10.9
## 112 78 10.3
## 113 77 15.5
## 114 72 14.3
## 115 75 12.6
## 116 79 9.7
## 117 81 3.4
## 118 86 8.0
## 119 88 5.7
## 120 97 9.7
## 121 94 2.3
## 122 96 6.3
## 123 94 6.3
Ejercicio 12: calcula el número de filas borradas del ejercicio anterior. Tras hacer todo ello, traduce a castellano el nombre de las columnas del
data.frame
filtrado.
- Solución:
## [1] 122
Ejercicio 13: añade a los datos originales una columna con la fecha completa (recuerda que es del año 1973 todas las observaciones.
- Solución:
# Construimos las fechas (pegamos año-mes-día con "-")
fechas <-
as_date(paste("1973", airquality$Month, airquality$Day,
sep = "-"))
# Añadimos
data.frame(airquality, fechas)
## Ozone Solar.R Wind Temp Month Day fechas
## 1 41 190 7.4 67 5 1 1973-05-01
## 2 36 118 8.0 72 5 2 1973-05-02
## 3 12 149 12.6 74 5 3 1973-05-03
## 4 18 313 11.5 62 5 4 1973-05-04
## 5 NA NA 14.3 56 5 5 1973-05-05
## 6 28 NA 14.9 66 5 6 1973-05-06
## 7 23 299 8.6 65 5 7 1973-05-07
## 8 19 99 13.8 59 5 8 1973-05-08
## 9 8 19 20.1 61 5 9 1973-05-09
## 10 NA 194 8.6 69 5 10 1973-05-10
## 11 7 NA 6.9 74 5 11 1973-05-11
## 12 16 256 9.7 69 5 12 1973-05-12
## 13 11 290 9.2 66 5 13 1973-05-13
## 14 14 274 10.9 68 5 14 1973-05-14
## 15 18 65 13.2 58 5 15 1973-05-15
## 16 14 334 11.5 64 5 16 1973-05-16
## 17 34 307 12.0 66 5 17 1973-05-17
## 18 6 78 18.4 57 5 18 1973-05-18
## 19 30 322 11.5 68 5 19 1973-05-19
## 20 11 44 9.7 62 5 20 1973-05-20
## 21 1 8 9.7 59 5 21 1973-05-21
## 22 11 320 16.6 73 5 22 1973-05-22
## 23 4 25 9.7 61 5 23 1973-05-23
## 24 32 92 12.0 61 5 24 1973-05-24
## 25 NA 66 16.6 57 5 25 1973-05-25
## 26 NA 266 14.9 58 5 26 1973-05-26
## 27 NA NA 8.0 57 5 27 1973-05-27
## 28 23 13 12.0 67 5 28 1973-05-28
## 29 45 252 14.9 81 5 29 1973-05-29
## 30 115 223 5.7 79 5 30 1973-05-30
## 31 37 279 7.4 76 5 31 1973-05-31
## 32 NA 286 8.6 78 6 1 1973-06-01
## 33 NA 287 9.7 74 6 2 1973-06-02
## 34 NA 242 16.1 67 6 3 1973-06-03
## 35 NA 186 9.2 84 6 4 1973-06-04
## 36 NA 220 8.6 85 6 5 1973-06-05
## 37 NA 264 14.3 79 6 6 1973-06-06
## 38 29 127 9.7 82 6 7 1973-06-07
## 39 NA 273 6.9 87 6 8 1973-06-08
## 40 71 291 13.8 90 6 9 1973-06-09
## 41 39 323 11.5 87 6 10 1973-06-10
## 42 NA 259 10.9 93 6 11 1973-06-11
## 43 NA 250 9.2 92 6 12 1973-06-12
## 44 23 148 8.0 82 6 13 1973-06-13
## 45 NA 332 13.8 80 6 14 1973-06-14
## 46 NA 322 11.5 79 6 15 1973-06-15
## 47 21 191 14.9 77 6 16 1973-06-16
## 48 37 284 20.7 72 6 17 1973-06-17
## 49 20 37 9.2 65 6 18 1973-06-18
## 50 12 120 11.5 73 6 19 1973-06-19
## 51 13 137 10.3 76 6 20 1973-06-20
## 52 NA 150 6.3 77 6 21 1973-06-21
## 53 NA 59 1.7 76 6 22 1973-06-22
## 54 NA 91 4.6 76 6 23 1973-06-23
## 55 NA 250 6.3 76 6 24 1973-06-24
## 56 NA 135 8.0 75 6 25 1973-06-25
## 57 NA 127 8.0 78 6 26 1973-06-26
## 58 NA 47 10.3 73 6 27 1973-06-27
## 59 NA 98 11.5 80 6 28 1973-06-28
## 60 NA 31 14.9 77 6 29 1973-06-29
## 61 NA 138 8.0 83 6 30 1973-06-30
## 62 135 269 4.1 84 7 1 1973-07-01
## 63 49 248 9.2 85 7 2 1973-07-02
## 64 32 236 9.2 81 7 3 1973-07-03
## 65 NA 101 10.9 84 7 4 1973-07-04
## 66 64 175 4.6 83 7 5 1973-07-05
## 67 40 314 10.9 83 7 6 1973-07-06
## 68 77 276 5.1 88 7 7 1973-07-07
## 69 97 267 6.3 92 7 8 1973-07-08
## 70 97 272 5.7 92 7 9 1973-07-09
## 71 85 175 7.4 89 7 10 1973-07-10
## 72 NA 139 8.6 82 7 11 1973-07-11
## 73 10 264 14.3 73 7 12 1973-07-12
## 74 27 175 14.9 81 7 13 1973-07-13
## 75 NA 291 14.9 91 7 14 1973-07-14
## 76 7 48 14.3 80 7 15 1973-07-15
## 77 48 260 6.9 81 7 16 1973-07-16
## 78 35 274 10.3 82 7 17 1973-07-17
## 79 61 285 6.3 84 7 18 1973-07-18
## 80 79 187 5.1 87 7 19 1973-07-19
## 81 63 220 11.5 85 7 20 1973-07-20
## 82 16 7 6.9 74 7 21 1973-07-21
## 83 NA 258 9.7 81 7 22 1973-07-22
## 84 NA 295 11.5 82 7 23 1973-07-23
## 85 80 294 8.6 86 7 24 1973-07-24
## 86 108 223 8.0 85 7 25 1973-07-25
## 87 20 81 8.6 82 7 26 1973-07-26
## 88 52 82 12.0 86 7 27 1973-07-27
## 89 82 213 7.4 88 7 28 1973-07-28
## 90 50 275 7.4 86 7 29 1973-07-29
## 91 64 253 7.4 83 7 30 1973-07-30
## 92 59 254 9.2 81 7 31 1973-07-31
## 93 39 83 6.9 81 8 1 1973-08-01
## 94 9 24 13.8 81 8 2 1973-08-02
## 95 16 77 7.4 82 8 3 1973-08-03
## 96 78 NA 6.9 86 8 4 1973-08-04
## 97 35 NA 7.4 85 8 5 1973-08-05
## 98 66 NA 4.6 87 8 6 1973-08-06
## 99 122 255 4.0 89 8 7 1973-08-07
## 100 89 229 10.3 90 8 8 1973-08-08
## 101 110 207 8.0 90 8 9 1973-08-09
## 102 NA 222 8.6 92 8 10 1973-08-10
## 103 NA 137 11.5 86 8 11 1973-08-11
## 104 44 192 11.5 86 8 12 1973-08-12
## 105 28 273 11.5 82 8 13 1973-08-13
## 106 65 157 9.7 80 8 14 1973-08-14
## 107 NA 64 11.5 79 8 15 1973-08-15
## 108 22 71 10.3 77 8 16 1973-08-16
## 109 59 51 6.3 79 8 17 1973-08-17
## 110 23 115 7.4 76 8 18 1973-08-18
## 111 31 244 10.9 78 8 19 1973-08-19
## 112 44 190 10.3 78 8 20 1973-08-20
## 113 21 259 15.5 77 8 21 1973-08-21
## 114 9 36 14.3 72 8 22 1973-08-22
## 115 NA 255 12.6 75 8 23 1973-08-23
## 116 45 212 9.7 79 8 24 1973-08-24
## 117 168 238 3.4 81 8 25 1973-08-25
## 118 73 215 8.0 86 8 26 1973-08-26
## 119 NA 153 5.7 88 8 27 1973-08-27
## 120 76 203 9.7 97 8 28 1973-08-28
## 121 118 225 2.3 94 8 29 1973-08-29
## 122 84 237 6.3 96 8 30 1973-08-30
## 123 85 188 6.3 94 8 31 1973-08-31
## 124 96 167 6.9 91 9 1 1973-09-01
## 125 78 197 5.1 92 9 2 1973-09-02
## 126 73 183 2.8 93 9 3 1973-09-03
## 127 91 189 4.6 93 9 4 1973-09-04
## 128 47 95 7.4 87 9 5 1973-09-05
## 129 32 92 15.5 84 9 6 1973-09-06
## 130 20 252 10.9 80 9 7 1973-09-07
## 131 23 220 10.3 78 9 8 1973-09-08
## 132 21 230 10.9 75 9 9 1973-09-09
## 133 24 259 9.7 73 9 10 1973-09-10
## 134 44 236 14.9 81 9 11 1973-09-11
## 135 21 259 15.5 76 9 12 1973-09-12
## 136 28 238 6.3 77 9 13 1973-09-13
## 137 9 24 10.9 71 9 14 1973-09-14
## 138 13 112 11.5 71 9 15 1973-09-15
## 139 46 237 6.9 78 9 16 1973-09-16
## 140 18 224 13.8 67 9 17 1973-09-17
## 141 13 27 10.3 76 9 18 1973-09-18
## 142 24 238 10.3 68 9 19 1973-09-19
## 143 16 201 8.0 82 9 20 1973-09-20
## 144 13 238 12.6 64 9 21 1973-09-21
## 145 23 14 9.2 71 9 22 1973-09-22
## 146 36 139 10.3 81 9 23 1973-09-23
## 147 7 49 10.3 69 9 24 1973-09-24
## 148 14 20 16.6 63 9 25 1973-09-25
## 149 30 193 6.9 70 9 26 1973-09-26
## 150 NA 145 13.2 77 9 27 1973-09-27
## 151 14 191 14.3 75 9 28 1973-09-28
## 152 18 131 8.0 76 9 29 1973-09-29
## 153 20 223 11.5 68 9 30 1973-09-30
0.6 Listas
Scripts usados:
- script10.R: datos estructurados. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script10.R
(haz click en las flechas para ver soluciones)
Ejercicio 1: define una lista de 4 elementos de tipos distintos y accede al segundo de ellos (yo incluiré uno que sea un
data.frame
para que veas que en una lista cabe de todo).
- Solución:
# Ejemplo: lista con texto, numérico, lógico y un data.frame
lista_ejemplo <- list("nombre" = "Javier", "cp" = 28019,
"soltero" = TRUE,
"notas" = data.frame("mates" = c(7.5, 8, 9),
"lengua" = c(10, 5, 6)))
lista_ejemplo
## $nombre
## [1] "Javier"
##
## $cp
## [1] 28019
##
## $soltero
## [1] TRUE
##
## $notas
## mates lengua
## 1 7.5 10
## 2 8.0 5
## 3 9.0 6
# Longitud
length(lista_ejemplo)
## [1] 4
# Accedemos al elemento dos
lista_ejemplo[[2]]
## [1] 28019
Ejercicio 2: accede a los elementos que ocupan los lugares 1 y 4 de la lista definida anteriormente.
- Solución:
# Accedemos al 1 y al 4
lista_ejemplo[c(1, 4)]
## $nombre
## [1] "Javier"
##
## $notas
## mates lengua
## 1 7.5 10
## 2 8.0 5
## 3 9.0 6
Otra opción es acceder con los nombres
# Accedemos al 1 y al 4
lista_ejemplo$nombre
## [1] "Javier"
lista_ejemplo$notas
## mates lengua
## 1 7.5 10
## 2 8.0 5
## 3 9.0 6
lista_ejemplo[c("nombre", "notas")]
## $nombre
## [1] "Javier"
##
## $notas
## mates lengua
## 1 7.5 10
## 2 8.0 5
## 3 9.0 6
Ejercicio 3: define una lista de 4 elementos que contenga, en una sola variable, tu nombre, apellido, edad y si estás soltero/a.
- Solución:
# Creamos lista: con lubridate calculamos la diferencia de años desde la fecha de nuestro nacimiento hasta hoy (sea cuando sea hoy)
lista_personal <- list("nombre" = "Javier",
"apellidos" = "Álvarez Liébana",
"edad" = 32,
"soltero" = TRUE)
lista_personal
## $nombre
## [1] "Javier"
##
## $apellidos
## [1] "Álvarez Liébana"
##
## $edad
## [1] 32
##
## $soltero
## [1] TRUE
0.7 Estructuras if-else
Scripts usados:
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: modifica el código inferior para imprimir un mensaje por pantalla si todos los datos del conjunto
airquality
son de meses que no sean enero.
# install.packages("dataset") # solo la primera vez
library(datasets) # paquete con los datos
mes <- airquality$Month
if (mes == 2) {
print("Ningún dato es del mes de enero")
}
- Solución:
# install.packages("dataset") # solo la primera vez
library(datasets) # paquete con los datos
mes <- airquality$Month
if (all(mes != 1)) { # todos con mes distinto de 1
print("Ningún dato es del mes de enero")
}
## [1] "Ningún dato es del mes de enero"
📝Ejercicio 2: modifica el código inferior para guardar en una variable
temperatura_alta
un valor TRUE
si alguno de los registros tiene una temperatura mayor a 90 (están en Farenheit) y un FALSE
en caso contrario.
temperatura <- airquality$Temp
if (temperatura == 100) {
print("Alguno de los registros tiene temperatura superior a 90 Farenheit")
}
- Solución:
temperatura <- airquality$Temp
temperatura_alta <- FALSE # por defecto FALSE
if (any(temperatura > 90)) {
temperatura_alta <- TRUE # si se cumple la condición, a TRUE
}
📝Ejercicio 3: modifica el código inferior para imprimir un mensaje por pantalla si alguno de los días supera la temperatura de 100.
temperatura <- airquality$Temp
if (all(temperatura < 50)) {
print("Alguno de los registros tiene temperatura superior a 100 Farenheit")
}
- Solución:
temperatura <- airquality$Temp
if (any(temperatura > 100)) { # nos basta con uno
print("Alguno de los registros tiene temperatura superior a 100 Farenheit")
}
No debería imprimar nada porque ninguno cumple la condición.
📝Ejercicio 4: del paquete lubridate, la función
hour()
nos devuelve la hora de una fecha dada, y la función now()
nos devuelve fecha y hora del momento actual. Con ambas funciones, y usando if
, imprime por pantalla "buenas noches"
solo a partir de las 21 horas.
- Solución:
📝Ejercicio 5: con las funciones del ejercicio anterior, y usando una estructura
if-else
, imprime por pantalla "buenos días"
(de 6 a 14 horas), "buenas tardes"
(de 14 a 21 horas) o "buenas noches"
(de las 21 a las 6 horas).
- Solución:
# Fecha actual
fecha_actual <- now()
# Estructura if-else
if (hour(fecha_actual) > 6 & hour(fecha_actual) < 14) {
cat("Buenos días")
} else if (hour(fecha_actual) > 14 & hour(fecha_actual) < 21) {
cat("Buenas tardes")
} else {
cat("Buenas noches")
}
## Buenas tardes
📝Ejercicio 6: realiza el ejercicio anterior pero sin estructura de llaves, de forma concisa con
ifelse()
. Mira la ayuda si la necesitases poniendo ? ifelse
en consola.
- Solución:
# Fecha actual
fecha_actual <- now()
# Estructura if-else
cat(ifelse(hour(fecha_actual) > 6 & hour(fecha_actual) < 14,
"Buenos días",
ifelse(hour(fecha_actual) > 14 &
hour(fecha_actual) < 21,
"Buenas tardes", "Buenas noches")))
## Buenas tardes
0.8 Estructuras for y while
Scripts usados:
(haz click en las flechas para ver soluciones)
📝Ejercicio 1: modifica el código interior para diseñar un bucle
for
de 5 iteraciones que recorra los 5 primeros impares y les sume uno.
for (i in 1:5) {
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
- Solución:
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
📝Ejercicio 2: modifica el código interior para diseñar un bucle
while
que parta con una variable conteo <- 1
y pare cuando llegue a 6.
conteo <- 1
while (conteo == 2) {
print(conteo)
}
- Solución:
conteo <- 1
while (conteo < 6) {
print(conteo)
conteo <- conteo <- conteo + 1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
📝Ejercicio 3: construye un bucle que recorra las primeras 8 filas del conjunto de datos
datasets::airquality
y que imprima un mensaje con la temperatura
- Solución:
## La temperatura es de 67ºF
## La temperatura es de 72ºF
## La temperatura es de 74ºF
## La temperatura es de 62ºF
## La temperatura es de 56ºF
## La temperatura es de 66ºF
## La temperatura es de 65ºF
## La temperatura es de 59ºF
📝Ejercicio 4: diseña un bucle
for
de 200 iteraciones que, empezando en un valor inicial de 100 (euros), te sume 3€ si el número actual es par y te reste 5€ si es impar.
Un número par o impar: un número par será todo aquel número que al dividir entre 2, la división es exacta, es decir, que su resto es nulo. Por ejemplo, al dividir 5 entre 2, el resto es 1, pero al dividir 12 entre 2 el resto es 0. Para calcula ese resto usaremos la función %%
.
5 %% 2
## [1] 1
12 %% 2
## [1] 0
23 %% 2
## [1] 1
46 %% 2
## [1] 0
- Solución:
# dinero inicial
dinero <- 100
# Bucle for
for (i in 1:200) {
dinero <- ifelse(dinero %% 2 == 0, dinero + 3, dinero - 5)
}
dinero
## [1] -100
📝Ejercicio 5: diseña el anterior bucle pero guardando el dinero de cada iteración.
- Solución:
# vector de importes
dinero <- rep(0, 201)
dinero[1] <- 100 # dinero inicial
# Bucle for
for (i in 2:201) {
# si dinero[i - 1] es par o impar
dinero[i] <- ifelse(dinero[i - 1] %% 2 == 0, dinero[i - 1] + 3,
dinero[i - 1] - 5)
}
dinero
## [1] 100 103 98 101 96 99 94 97 92 95 90 93 88 91 86
## [16] 89 84 87 82 85 80 83 78 81 76 79 74 77 72 75
## [31] 70 73 68 71 66 69 64 67 62 65 60 63 58 61 56
## [46] 59 54 57 52 55 50 53 48 51 46 49 44 47 42 45
## [61] 40 43 38 41 36 39 34 37 32 35 30 33 28 31 26
## [76] 29 24 27 22 25 20 23 18 21 16 19 14 17 12 15
## [91] 10 13 8 11 6 9 4 7 2 5 0 3 -2 1 -4
## [106] -1 -6 -3 -8 -5 -10 -7 -12 -9 -14 -11 -16 -13 -18 -15
## [121] -20 -17 -22 -19 -24 -21 -26 -23 -28 -25 -30 -27 -32 -29 -34
## [136] -31 -36 -33 -38 -35 -40 -37 -42 -39 -44 -41 -46 -43 -48 -45
## [151] -50 -47 -52 -49 -54 -51 -56 -53 -58 -55 -60 -57 -62 -59 -64
## [166] -61 -66 -63 -68 -65 -70 -67 -72 -69 -74 -71 -76 -73 -78 -75
## [181] -80 -77 -82 -79 -84 -81 -86 -83 -88 -85 -90 -87 -92 -89 -94
## [196] -91 -96 -93 -98 -95 -100
📝Ejercicio 6: diseña el bucle del ejercicio 4 parando cuando no nos quede dinero.
- Solución:
dinero <- 100 # dinero inicial
# Bucle while
while (dinero > 0) {
dinero <- ifelse(dinero %% 2 == 0, dinero + 3, dinero - 5)
}
dinero
## [1] 0
0.9 Funciones
Scripts usados:
(haz click en las flechas para ver soluciones)
Ejercicio 1: modifica el código inferior para definir una función llamada
funcion_suma
, de forma que dados dos elementos, devuelve su suma.
# Definimos función
nombre <- function(x, y) {
# Sumamos
suma <- # código a ejecutar
# ¿Qué devolvemos?
return()
}
# Aplicamos la función
suma(3, 7)
- Solución:
# Definimos función
funcion_suma <- function(x, y) {
# Sumamos
suma <- x + y
# Devolvemos la salida
return(suma)
}
# Aplicamos la función
funcion_suma(3, 7)
## [1] 10
&nsbp;
Ejercicio 2: modifica el código inferior para definir una función llamada
funcion_producto
, de forma que dados dos elementos, devuelve su producto.
# Definimos función
nombre <- function(x, y) {
# Multiplicamos
producto <- # código de la multiplicación
# ¿Qué devolvemos?
return()
}
# Aplicamos la función
producto(3, -7)
- Solución:
# Definimos función
funcion_producto <- function(x, y) {
# Multiplicamos
producto <- x * y
# Devolvemos la salida
return(producto)
}
# Aplicamos la función
funcion_producto(3, -7)
## [1] -21
Ejercicio 3: modifica el código inferior para definir una función llamada
funcion_producto
, de forma que dados dos elementos, devuelve su producto, pero que por defecto calcule el cuadrado (es decir, por defecto un solo argumento, y el resultado sea el número por sí mismo)
# Definimos función
nombre <- function(x, y) {
# Multiplicamos
producto <- # código de la multiplicación
# ¿Qué devolvemos?
return()
}
# Aplicamos la función solo con un argumento
producto(3)
# Aplicamos la función con dos argumentos
producto(3, -7)
- Solución:
# Definimos función
funcion_producto <- function(x, y = x) {
# Multiplicamos
producto <- x * y
# Devolvemos la salida
return(producto)
}
# Aplicamos la función
funcion_producto(3) # por defecto x = 3, y = 3
## [1] 9
funcion_producto(3, -7)
## [1] -21
Ejercicio 4: define una función llamada
igualdad_nombres
que, dados dos nombres persona_1
e persona_2
, nos diga si son iguales o no. Hazlo considerando importantes las mayúsculas, y sin que importen las mayúsculas. Recuerda que con toupper()
podemos pasar todo un texto a mayúscula.
- Solución:
# Distinguiendo mayúsculas
igualdad_nombres <- function(persona_1, persona_2) {
return(persona_1 == persona_2)
}
igualdad_nombres("Javi", "javi")
## [1] FALSE
igualdad_nombres("Javi", "Lucía")
## [1] FALSE
# Sin importar mayúsculas
igualdad_nombres <- function(persona_1, persona_2) {
return(toupper(persona_1) == toupper(persona_2))
}
igualdad_nombres("Javi", "javi")
## [1] TRUE
igualdad_nombres("Javi", "Lucía")
## [1] FALSE
Ejercicio 5: define una función llamada
pares
que, dados dos números x
e y
, nos diga si la suma de ambos es par o no.
Recuerda que con %%
podemos obtener el resto de un número al dividir entre 2.
2 %% 2 # par, resto 0
## [1] 0
3 %% 2 # impar, resto 1
## [1] 1
- Solución:
# Definimos función
pares <- function(x, y) {
# Sumamos
suma <- x + y
# Comprobamos si es par
par <- suma %% 2 == 0
# Devolvemos la salida
return(par)
}
# Aplicamos la función
pares(1, 3) # suma 4 (par)
## [1] TRUE
pares(2, 7) # suma 9 (impar)
## [1] FALSE
Ejercicio 6: define una función llamada
pasar_a_celsius
que, dada una temperatura \(x\) en Fahrenheit, la convierta a grados Celsius (\(ºC = (ºF - 32) * \frac{5}{9}\)). Aplica la función a la columna Temp
del conjunto airquality
, e incorpórala al fichero en una nueva columna Temp_Celsius
.
- Solución:
# Definimos función
pasar_a_celsius <- function(x) {
# Temperatura en Celsius
x_celsius <- (x - 32) * (5 / 9)
# Devolvemos la salida
return(x_celsius)
}
# Aplicamos la función
pasar_a_celsius(0)
## [1] -17.77778
pasar_a_celsius(80)
## [1] 26.66667
# Aplicamos
data.frame(airquality,
"Temp_Celsius" = pasar_a_celsius(airquality$Temp))
## Ozone Solar.R Wind Temp Month Day Temp_Celsius
## 1 41 190 7.4 67 5 1 19.44444
## 2 36 118 8.0 72 5 2 22.22222
## 3 12 149 12.6 74 5 3 23.33333
## 4 18 313 11.5 62 5 4 16.66667
## 5 NA NA 14.3 56 5 5 13.33333
## 6 28 NA 14.9 66 5 6 18.88889
## 7 23 299 8.6 65 5 7 18.33333
## 8 19 99 13.8 59 5 8 15.00000
## 9 8 19 20.1 61 5 9 16.11111
## 10 NA 194 8.6 69 5 10 20.55556
## 11 7 NA 6.9 74 5 11 23.33333
## 12 16 256 9.7 69 5 12 20.55556
## 13 11 290 9.2 66 5 13 18.88889
## 14 14 274 10.9 68 5 14 20.00000
## 15 18 65 13.2 58 5 15 14.44444
## 16 14 334 11.5 64 5 16 17.77778
## 17 34 307 12.0 66 5 17 18.88889
## 18 6 78 18.4 57 5 18 13.88889
## 19 30 322 11.5 68 5 19 20.00000
## 20 11 44 9.7 62 5 20 16.66667
## 21 1 8 9.7 59 5 21 15.00000
## 22 11 320 16.6 73 5 22 22.77778
## 23 4 25 9.7 61 5 23 16.11111
## 24 32 92 12.0 61 5 24 16.11111
## 25 NA 66 16.6 57 5 25 13.88889
## 26 NA 266 14.9 58 5 26 14.44444
## 27 NA NA 8.0 57 5 27 13.88889
## 28 23 13 12.0 67 5 28 19.44444
## 29 45 252 14.9 81 5 29 27.22222
## 30 115 223 5.7 79 5 30 26.11111
## 31 37 279 7.4 76 5 31 24.44444
## 32 NA 286 8.6 78 6 1 25.55556
## 33 NA 287 9.7 74 6 2 23.33333
## 34 NA 242 16.1 67 6 3 19.44444
## 35 NA 186 9.2 84 6 4 28.88889
## 36 NA 220 8.6 85 6 5 29.44444
## 37 NA 264 14.3 79 6 6 26.11111
## 38 29 127 9.7 82 6 7 27.77778
## 39 NA 273 6.9 87 6 8 30.55556
## 40 71 291 13.8 90 6 9 32.22222
## 41 39 323 11.5 87 6 10 30.55556
## 42 NA 259 10.9 93 6 11 33.88889
## 43 NA 250 9.2 92 6 12 33.33333
## 44 23 148 8.0 82 6 13 27.77778
## 45 NA 332 13.8 80 6 14 26.66667
## 46 NA 322 11.5 79 6 15 26.11111
## 47 21 191 14.9 77 6 16 25.00000
## 48 37 284 20.7 72 6 17 22.22222
## 49 20 37 9.2 65 6 18 18.33333
## 50 12 120 11.5 73 6 19 22.77778
## 51 13 137 10.3 76 6 20 24.44444
## 52 NA 150 6.3 77 6 21 25.00000
## 53 NA 59 1.7 76 6 22 24.44444
## 54 NA 91 4.6 76 6 23 24.44444
## 55 NA 250 6.3 76 6 24 24.44444
## 56 NA 135 8.0 75 6 25 23.88889
## 57 NA 127 8.0 78 6 26 25.55556
## 58 NA 47 10.3 73 6 27 22.77778
## 59 NA 98 11.5 80 6 28 26.66667
## 60 NA 31 14.9 77 6 29 25.00000
## 61 NA 138 8.0 83 6 30 28.33333
## 62 135 269 4.1 84 7 1 28.88889
## 63 49 248 9.2 85 7 2 29.44444
## 64 32 236 9.2 81 7 3 27.22222
## 65 NA 101 10.9 84 7 4 28.88889
## 66 64 175 4.6 83 7 5 28.33333
## 67 40 314 10.9 83 7 6 28.33333
## 68 77 276 5.1 88 7 7 31.11111
## 69 97 267 6.3 92 7 8 33.33333
## 70 97 272 5.7 92 7 9 33.33333
## 71 85 175 7.4 89 7 10 31.66667
## 72 NA 139 8.6 82 7 11 27.77778
## 73 10 264 14.3 73 7 12 22.77778
## 74 27 175 14.9 81 7 13 27.22222
## 75 NA 291 14.9 91 7 14 32.77778
## 76 7 48 14.3 80 7 15 26.66667
## 77 48 260 6.9 81 7 16 27.22222
## 78 35 274 10.3 82 7 17 27.77778
## 79 61 285 6.3 84 7 18 28.88889
## 80 79 187 5.1 87 7 19 30.55556
## 81 63 220 11.5 85 7 20 29.44444
## 82 16 7 6.9 74 7 21 23.33333
## 83 NA 258 9.7 81 7 22 27.22222
## 84 NA 295 11.5 82 7 23 27.77778
## 85 80 294 8.6 86 7 24 30.00000
## 86 108 223 8.0 85 7 25 29.44444
## 87 20 81 8.6 82 7 26 27.77778
## 88 52 82 12.0 86 7 27 30.00000
## 89 82 213 7.4 88 7 28 31.11111
## 90 50 275 7.4 86 7 29 30.00000
## 91 64 253 7.4 83 7 30 28.33333
## 92 59 254 9.2 81 7 31 27.22222
## 93 39 83 6.9 81 8 1 27.22222
## 94 9 24 13.8 81 8 2 27.22222
## 95 16 77 7.4 82 8 3 27.77778
## 96 78 NA 6.9 86 8 4 30.00000
## 97 35 NA 7.4 85 8 5 29.44444
## 98 66 NA 4.6 87 8 6 30.55556
## 99 122 255 4.0 89 8 7 31.66667
## 100 89 229 10.3 90 8 8 32.22222
## 101 110 207 8.0 90 8 9 32.22222
## 102 NA 222 8.6 92 8 10 33.33333
## 103 NA 137 11.5 86 8 11 30.00000
## 104 44 192 11.5 86 8 12 30.00000
## 105 28 273 11.5 82 8 13 27.77778
## 106 65 157 9.7 80 8 14 26.66667
## 107 NA 64 11.5 79 8 15 26.11111
## 108 22 71 10.3 77 8 16 25.00000
## 109 59 51 6.3 79 8 17 26.11111
## 110 23 115 7.4 76 8 18 24.44444
## 111 31 244 10.9 78 8 19 25.55556
## 112 44 190 10.3 78 8 20 25.55556
## 113 21 259 15.5 77 8 21 25.00000
## 114 9 36 14.3 72 8 22 22.22222
## 115 NA 255 12.6 75 8 23 23.88889
## 116 45 212 9.7 79 8 24 26.11111
## 117 168 238 3.4 81 8 25 27.22222
## 118 73 215 8.0 86 8 26 30.00000
## 119 NA 153 5.7 88 8 27 31.11111
## 120 76 203 9.7 97 8 28 36.11111
## 121 118 225 2.3 94 8 29 34.44444
## 122 84 237 6.3 96 8 30 35.55556
## 123 85 188 6.3 94 8 31 34.44444
## 124 96 167 6.9 91 9 1 32.77778
## 125 78 197 5.1 92 9 2 33.33333
## 126 73 183 2.8 93 9 3 33.88889
## 127 91 189 4.6 93 9 4 33.88889
## 128 47 95 7.4 87 9 5 30.55556
## 129 32 92 15.5 84 9 6 28.88889
## 130 20 252 10.9 80 9 7 26.66667
## 131 23 220 10.3 78 9 8 25.55556
## 132 21 230 10.9 75 9 9 23.88889
## 133 24 259 9.7 73 9 10 22.77778
## 134 44 236 14.9 81 9 11 27.22222
## 135 21 259 15.5 76 9 12 24.44444
## 136 28 238 6.3 77 9 13 25.00000
## 137 9 24 10.9 71 9 14 21.66667
## 138 13 112 11.5 71 9 15 21.66667
## 139 46 237 6.9 78 9 16 25.55556
## 140 18 224 13.8 67 9 17 19.44444
## 141 13 27 10.3 76 9 18 24.44444
## 142 24 238 10.3 68 9 19 20.00000
## 143 16 201 8.0 82 9 20 27.77778
## 144 13 238 12.6 64 9 21 17.77778
## 145 23 14 9.2 71 9 22 21.66667
## 146 36 139 10.3 81 9 23 27.22222
## 147 7 49 10.3 69 9 24 20.55556
## 148 14 20 16.6 63 9 25 17.22222
## 149 30 193 6.9 70 9 26 21.11111
## 150 NA 145 13.2 77 9 27 25.00000
## 151 14 191 14.3 75 9 28 23.88889
## 152 18 131 8.0 76 9 29 24.44444
## 153 20 223 11.5 68 9 30 20.00000
0.10 Practica final
Scripts usados:
- script16.R: practica final. Ver en https://github.com/dadosdelaplace/courses-intro-R/blob/main/scripts/script16.R
(haz click en las flechas para ver soluciones)
Ejercicio 1: carga el fichero
titanic.RData
que tienes en la carpeta DATOS
https://github.com/dadosdelaplace/courses-intro-r/tree/main/DATOS.
- Solución:
load("./DATOS/titanic.RData")
&nsbp;
Ejercicio 2: obtén el número de individuos y de variables de nuestro dataset
- Solución:
ncol(titanic) # variables
## [1] 12
nrow(titanic) # individuos
## [1] 891
&nsbp;
Ejercicio 3: ¿de qué tipo es la variable
Name
? ¿Y la variable Pclass
? ¿Y la variable Age
? ¿Y la variable Survived
- Solución:
class(titanic$Name)
## [1] "character"
class(titanic$Pclass)
## [1] "integer"
class(titanic$Age)
## [1] "numeric"
class(titanic$Survived)
## [1] "integer"
&nsbp;
Ejercicio 4: internamente tenemos
0
y 1
pero la variable Survived
en realidad debería ser variable lógica (TRUE
si sobrevivió). Modifica la variable para ponter TRUE
cuando vale 1
y FALSE
en caso contrario
- Solución:
# Modo ifelse
titanic$Survived <- ifelse(titanic$Survived == 1, TRUE, FALSE)
# otra forma: modo bucle + if
load("./DATOS/titanic.RData")
nueva_variable <- rep(FALSE, length(titanic$Survived))
for (i in 1:length(titanic$Survived)) {
if (titanic$Survived[i] == 1) {
nueva_variable[i] <- TRUE
}
}
titanic$Survived <- nueva_variable
&nsbp;
Ejercicio 5: en la variable
Name
tenemos guardado el nombre de los pasajeros, pero también su título (Mr.
, Mrs
, Miss
, etc). Extrae los nombres de las personas con Miss.
- Solución:
library(stringr)
# Con str_detect obtenemos un TRUE/FALSE
titanic$Name[str_detect(titanic$Name, pattern = "Miss.")]
## [1] "Heikkinen, Miss. Laina"
## [2] "Sandstrom, Miss. Marguerite Rut"
## [3] "Bonnell, Miss. Elizabeth"
## [4] "Vestrom, Miss. Hulda Amanda Adolfina"
## [5] "McGowan, Miss. Anna \"Annie\""
## [6] "Palsson, Miss. Torborg Danira"
## [7] "O'Dwyer, Miss. Ellen \"Nellie\""
## [8] "Glynn, Miss. Mary Agatha"
## [9] "Vander Planke, Miss. Augusta Maria"
## [10] "Nicola-Yarred, Miss. Jamila"
## [11] "Laroche, Miss. Simonne Marie Anne Andree"
## [12] "Devaney, Miss. Margaret Delia"
## [13] "O'Driscoll, Miss. Bridget"
## [14] "Rugg, Miss. Emily"
## [15] "West, Miss. Constance Mirium"
## [16] "Icard, Miss. Amelie"
## [17] "Andersson, Miss. Erna Alexandra"
## [18] "Goodwin, Miss. Lillian Amy"
## [19] "Dowdell, Miss. Elizabeth"
## [20] "McDermott, Miss. Brigdet Delia"
## [21] "Ilett, Miss. Bertha"
## [22] "Fortune, Miss. Mabel Helen"
## [23] "Petranec, Miss. Matilda"
## [24] "Salkjelsvik, Miss. Anna Kristine"
## [25] "Moran, Miss. Bertha"
## [26] "Zabour, Miss. Hileni"
## [27] "Jussila, Miss. Katriina"
## [28] "Attalah, Miss. Malake"
## [29] "Andersson, Miss. Ellis Anna Maria"
## [30] "Webber, Miss. Susan"
## [31] "Peter, Miss. Anna"
## [32] "Newsom, Miss. Helen Monypeny"
## [33] "Nysten, Miss. Anna Sofia"
## [34] "Ford, Miss. Robina Maggie \"Ruby\""
## [35] "Gilnagh, Miss. Katherine \"Katie\""
## [36] "Johnson, Miss. Eleanor Ileen"
## [37] "Isham, Miss. Ann Elizabeth"
## [38] "Sage, Miss. Constance Gladys"
## [39] "Kink-Heilmann, Miss. Luise Gretchen"
## [40] "Andersen-Jensen, Miss. Carla Christine Nielsine"
## [41] "Lurette, Miss. Elise"
## [42] "Madigan, Miss. Margaret \"Maggie\""
## [43] "Yrois, Miss. Henriette (\"Mrs Harbeck\")"
## [44] "Strom, Miss. Telma Matilda"
## [45] "Carr, Miss. Helen \"Ellen\""
## [46] "Cameron, Miss. Clear Annie"
## [47] "Newell, Miss. Madeleine"
## [48] "Honkanen, Miss. Eliina"
## [49] "Bazzani, Miss. Albina"
## [50] "Lefebre, Miss. Mathilde"
## [51] "Asplund, Miss. Lillian Gertrud"
## [52] "Harknett, Miss. Alice Phoebe"
## [53] "Collyer, Miss. Marjorie \"Lottie\""
## [54] "Zabour, Miss. Thamine"
## [55] "Murphy, Miss. Katherine \"Kate\""
## [56] "Lindahl, Miss. Agda Thorilda Viktoria"
## [57] "Cherry, Miss. Gladys"
## [58] "Ward, Miss. Anna"
## [59] "Henry, Miss. Delia"
## [60] "Bissette, Miss. Amelia"
## [61] "Healy, Miss. Hanora \"Nora\""
## [62] "Andrews, Miss. Kornelia Theodosia"
## [63] "Lindblom, Miss. Augusta Charlotta"
## [64] "Connolly, Miss. Kate"
## [65] "Barber, Miss. Ellen \"Nellie\""
## [66] "Haas, Miss. Aloisia"
## [67] "Allison, Miss. Helen Loraine"
## [68] "Kelly, Miss. Anna Katherine \"Annie Kate\""
## [69] "Keane, Miss. Nora A"
## [70] "Fleming, Miss. Margaret"
## [71] "Francatelli, Miss. Laura Mabel"
## [72] "Hays, Miss. Margaret Bechstein"
## [73] "Ryerson, Miss. Emily Borie"
## [74] "Nilsson, Miss. Helmina Josefina"
## [75] "Wick, Miss. Mary Natalie"
## [76] "Slayter, Miss. Hilda Mary"
## [77] "Young, Miss. Marie Grice"
## [78] "Hippach, Miss. Jean Gertrude"
## [79] "McCoy, Miss. Agnes"
## [80] "Burns, Miss. Elizabeth Margaret"
## [81] "Fortune, Miss. Alice Elizabeth"
## [82] "Brown, Miss. Amelia \"Mildred\""
## [83] "Smith, Miss. Marion Elsie"
## [84] "Bowerman, Miss. Elsie Edith"
## [85] "Funk, Miss. Annie Clemmer"
## [86] "McGovern, Miss. Mary"
## [87] "Mockler, Miss. Helen Mary \"Ellie\""
## [88] "Jermyn, Miss. Annie"
## [89] "Palsson, Miss. Stina Viola"
## [90] "Landergren, Miss. Aurora Adelia"
## [91] "Bidois, Miss. Rosalie"
## [92] "Nakid, Miss. Maria (\"Mary\")"
## [93] "Buss, Miss. Kate"
## [94] "Lehmann, Miss. Bertha"
## [95] "Newell, Miss. Marjorie"
## [96] "Olsson, Miss. Elina"
## [97] "Jussila, Miss. Mari Aina"
## [98] "Oreskovic, Miss. Marija"
## [99] "Lefebre, Miss. Ida"
## [100] "Minahan, Miss. Daisy E"
## [101] "Silven, Miss. Lyyli Karoliina"
## [102] "Van Impe, Miss. Catharina"
## [103] "Phillips, Miss. Kate Florence (\"Mrs Kate Louise Phillips Marshall\")"
## [104] "Carter, Miss. Lucile Polk"
## [105] "Ford, Miss. Doolina Margaret \"Daisy\""
## [106] "Mellinger, Miss. Madeleine Violet"
## [107] "Baclini, Miss. Marie Catherine"
## [108] "Toomey, Miss. Ellen"
## [109] "Baclini, Miss. Helene Barbara"
## [110] "Strandberg, Miss. Ida Sofia"
## [111] "Hirvonen, Miss. Hildur E"
## [112] "Lefebre, Miss. Jeannie"
## [113] "Eustis, Miss. Elizabeth Mussey"
## [114] "Canavan, Miss. Mary"
## [115] "O'Sullivan, Miss. Bridget Mary"
## [116] "Laitinen, Miss. Kristina Sofia"
## [117] "Maioni, Miss. Roberta"
## [118] "Perreault, Miss. Anne"
## [119] "Ridsdale, Miss. Lucy"
## [120] "Quick, Miss. Phyllis May"
## [121] "Cacic, Miss. Marija"
## [122] "Hart, Miss. Eva Miriam"
## [123] "LeRoy, Miss. Bertha"
## [124] "Frolicher, Miss. Hedwig Margaritha"
## [125] "Crosby, Miss. Harriet R"
## [126] "Andersson, Miss. Ingeborg Constanzia"
## [127] "Andersson, Miss. Sigrid Elisabeth"
## [128] "Ohman, Miss. Velin"
## [129] "Meanwell, Miss. (Marion Ogden)"
## [130] "Kelly, Miss. Mary"
## [131] "Garside, Miss. Ethel"
## [132] "Christy, Miss. Julie Rachel"
## [133] "Taussig, Miss. Ruth"
## [134] "Bourke, Miss. Mary"
## [135] "Leitch, Miss. Jessie Wills"
## [136] "Shutes, Miss. Elizabeth W"
## [137] "Murphy, Miss. Margaret Jane"
## [138] "Herman, Miss. Alice"
## [139] "Becker, Miss. Marion Louise"
## [140] "Longley, Miss. Gretchen Fiske"
## [141] "Skoog, Miss. Mabel"
## [142] "Davis, Miss. Mary"
## [143] "Skoog, Miss. Margit Elizabeth"
## [144] "Baclini, Miss. Eugenie"
## [145] "Stanley, Miss. Amy Zillah Elsie"
## [146] "Doling, Miss. Elsie"
## [147] "O'Leary, Miss. Hanora \"Norah\""
## [148] "Hegarty, Miss. Hanora \"Nora\""
## [149] "Turja, Miss. Anna Sofia"
## [150] "Peters, Miss. Katie"
## [151] "Madill, Miss. Georgette Alexandra"
## [152] "Karun, Miss. Manca"
## [153] "Mullens, Miss. Katherine \"Katie\""
## [154] "Barbara, Miss. Saiide"
## [155] "Cleaver, Miss. Alice"
## [156] "Endres, Miss. Caroline Louise"
## [157] "Troutt, Miss. Edwina Celia \"Winnie\""
## [158] "Harper, Miss. Annie Jessie \"Nina\""
## [159] "Mannion, Miss. Margareth"
## [160] "Ilmakangas, Miss. Pieta Sofia"
## [161] "Allen, Miss. Elisabeth Walton"
## [162] "Ryerson, Miss. Susan Parker \"Suzette\""
## [163] "Sinkkonen, Miss. Anna"
## [164] "Wells, Miss. Joan"
## [165] "Mangan, Miss. Mary"
## [166] "Emanuel, Miss. Virginia Ethel"
## [167] "Ayoub, Miss. Banoura"
## [168] "Sjoblom, Miss. Anna Sofia"
## [169] "Sage, Miss. Stella Anna"
## [170] "Pettersson, Miss. Ellen Natalia"
## [171] "Andersson, Miss. Ebba Iris Alfrida"
## [172] "Heininen, Miss. Wendla Maria"
## [173] "Compton, Miss. Sara Rebecca"
## [174] "Serepeca, Miss. Augusta"
## [175] "Boulos, Miss. Nourelain"
## [176] "Lines, Miss. Mary Conover"
## [177] "Sage, Miss. Dorothy Edith \"Dolly\""
## [178] "Duran y More, Miss. Asuncion"
## [179] "Najib, Miss. Adele Kiamie \"Jane\""
## [180] "Dahlberg, Miss. Gerda Ulrika"
## [181] "Graham, Miss. Margaret Edith"
## [182] "Johnston, Miss. Catherine Helen \"Carrie\""
&nsbp;
Ejercicio 6: calcula la media de edad de los pasajeros del Titanic (recuerda: si hay datos ausentes…). Haz lo mismo pero por sexos (male/female)
- Solución:
mean(titanic$Age, na.rm = TRUE)
## [1] 29.69912
mean(titanic$Age[titanic$Sex == "male"], na.rm = TRUE)
## [1] 30.72664
mean(titanic$Age[titanic$Sex == "female"], na.rm = TRUE)
## [1] 27.91571
&nsbp;
Ejercicio 7: ordena la edad de los pasajeros del Titanic de menor a mayor, y de mayor a menor
- Solución:
sort(titanic$Age) # menor a mayor
## [1] 0.42 0.67 0.75 0.75 0.83 0.83 0.92 1.00 1.00 1.00 1.00 1.00
## [13] 1.00 1.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00
## [25] 3.00 3.00 3.00 3.00 3.00 3.00 4.00 4.00 4.00 4.00 4.00 4.00
## [37] 4.00 4.00 4.00 4.00 5.00 5.00 5.00 5.00 6.00 6.00 6.00 7.00
## [49] 7.00 7.00 8.00 8.00 8.00 8.00 9.00 9.00 9.00 9.00 9.00 9.00
## [61] 9.00 9.00 10.00 10.00 11.00 11.00 11.00 11.00 12.00 13.00 13.00 14.00
## [73] 14.00 14.00 14.00 14.00 14.00 14.50 15.00 15.00 15.00 15.00 15.00 16.00
## [85] 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00
## [97] 16.00 16.00 16.00 16.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00
## [109] 17.00 17.00 17.00 17.00 17.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00
## [121] 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00
## [133] 18.00 18.00 18.00 18.00 18.00 18.00 18.00 19.00 19.00 19.00 19.00 19.00
## [145] 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00
## [157] 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 20.00 20.00 20.00 20.00
## [169] 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.50
## [181] 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00
## [193] 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00
## [205] 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00
## [217] 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00
## [229] 22.00 22.00 22.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00
## [241] 23.00 23.00 23.00 23.00 23.00 23.00 23.50 24.00 24.00 24.00 24.00 24.00
## [253] 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00
## [265] 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00
## [277] 24.00 24.50 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00
## [289] 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00
## [301] 25.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00
## [313] 26.00 26.00 26.00 26.00 26.00 26.00 26.00 27.00 27.00 27.00 27.00 27.00
## [325] 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00
## [337] 27.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00
## [349] 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00
## [361] 28.00 28.00 28.50 28.50 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00
## [373] 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00
## [385] 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00
## [397] 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00
## [409] 30.00 30.50 30.50 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00
## [421] 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 32.00 32.00 32.00 32.00
## [433] 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00
## [445] 32.00 32.00 32.50 32.50 33.00 33.00 33.00 33.00 33.00 33.00 33.00 33.00
## [457] 33.00 33.00 33.00 33.00 33.00 33.00 33.00 34.00 34.00 34.00 34.00 34.00
## [469] 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.50 35.00
## [481] 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00
## [493] 35.00 35.00 35.00 35.00 35.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00
## [505] 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00
## [517] 36.00 36.00 36.00 36.50 37.00 37.00 37.00 37.00 37.00 37.00 38.00 38.00
## [529] 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 39.00 39.00 39.00
## [541] 39.00 39.00 39.00 39.00 39.00 39.00 39.00 39.00 39.00 39.00 39.00 40.00
## [553] 40.00 40.00 40.00 40.00 40.00 40.00 40.00 40.00 40.00 40.00 40.00 40.00
## [565] 40.50 40.50 41.00 41.00 41.00 41.00 41.00 41.00 42.00 42.00 42.00 42.00
## [577] 42.00 42.00 42.00 42.00 42.00 42.00 42.00 42.00 42.00 43.00 43.00 43.00
## [589] 43.00 43.00 44.00 44.00 44.00 44.00 44.00 44.00 44.00 44.00 44.00 45.00
## [601] 45.00 45.00 45.00 45.00 45.00 45.00 45.00 45.00 45.00 45.00 45.00 45.50
## [613] 45.50 46.00 46.00 46.00 47.00 47.00 47.00 47.00 47.00 47.00 47.00 47.00
## [625] 47.00 48.00 48.00 48.00 48.00 48.00 48.00 48.00 48.00 48.00 49.00 49.00
## [637] 49.00 49.00 49.00 49.00 50.00 50.00 50.00 50.00 50.00 50.00 50.00 50.00
## [649] 50.00 50.00 51.00 51.00 51.00 51.00 51.00 51.00 51.00 52.00 52.00 52.00
## [661] 52.00 52.00 52.00 53.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
## [673] 55.00 55.00 55.50 56.00 56.00 56.00 56.00 57.00 57.00 58.00 58.00 58.00
## [685] 58.00 58.00 59.00 59.00 60.00 60.00 60.00 60.00 61.00 61.00 61.00 62.00
## [697] 62.00 62.00 62.00 63.00 63.00 64.00 64.00 65.00 65.00 65.00 66.00 70.00
## [709] 70.00 70.50 71.00 71.00 74.00 80.00
sort(titanic$Age, decreasing = TRUE) # mayor a menor
## [1] 80.00 74.00 71.00 71.00 70.50 70.00 70.00 66.00 65.00 65.00 65.00 64.00
## [13] 64.00 63.00 63.00 62.00 62.00 62.00 62.00 61.00 61.00 61.00 60.00 60.00
## [25] 60.00 60.00 59.00 59.00 58.00 58.00 58.00 58.00 58.00 57.00 57.00 56.00
## [37] 56.00 56.00 56.00 55.50 55.00 55.00 54.00 54.00 54.00 54.00 54.00 54.00
## [49] 54.00 54.00 53.00 52.00 52.00 52.00 52.00 52.00 52.00 51.00 51.00 51.00
## [61] 51.00 51.00 51.00 51.00 50.00 50.00 50.00 50.00 50.00 50.00 50.00 50.00
## [73] 50.00 50.00 49.00 49.00 49.00 49.00 49.00 49.00 48.00 48.00 48.00 48.00
## [85] 48.00 48.00 48.00 48.00 48.00 47.00 47.00 47.00 47.00 47.00 47.00 47.00
## [97] 47.00 47.00 46.00 46.00 46.00 45.50 45.50 45.00 45.00 45.00 45.00 45.00
## [109] 45.00 45.00 45.00 45.00 45.00 45.00 45.00 44.00 44.00 44.00 44.00 44.00
## [121] 44.00 44.00 44.00 44.00 43.00 43.00 43.00 43.00 43.00 42.00 42.00 42.00
## [133] 42.00 42.00 42.00 42.00 42.00 42.00 42.00 42.00 42.00 42.00 41.00 41.00
## [145] 41.00 41.00 41.00 41.00 40.50 40.50 40.00 40.00 40.00 40.00 40.00 40.00
## [157] 40.00 40.00 40.00 40.00 40.00 40.00 40.00 39.00 39.00 39.00 39.00 39.00
## [169] 39.00 39.00 39.00 39.00 39.00 39.00 39.00 39.00 39.00 38.00 38.00 38.00
## [181] 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 37.00 37.00 37.00 37.00
## [193] 37.00 37.00 36.50 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00
## [205] 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00 36.00
## [217] 36.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00 35.00
## [229] 35.00 35.00 35.00 35.00 35.00 35.00 35.00 34.50 34.00 34.00 34.00 34.00
## [241] 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 34.00 33.00
## [253] 33.00 33.00 33.00 33.00 33.00 33.00 33.00 33.00 33.00 33.00 33.00 33.00
## [265] 33.00 33.00 32.50 32.50 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00
## [277] 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 31.00 31.00
## [289] 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00
## [301] 31.00 31.00 31.00 30.50 30.50 30.00 30.00 30.00 30.00 30.00 30.00 30.00
## [313] 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00 30.00
## [325] 30.00 30.00 30.00 30.00 30.00 30.00 29.00 29.00 29.00 29.00 29.00 29.00
## [337] 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00 29.00
## [349] 29.00 29.00 28.50 28.50 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00
## [361] 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00 28.00
## [373] 28.00 28.00 28.00 28.00 28.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00
## [385] 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 27.00 26.00
## [397] 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00 26.00
## [409] 26.00 26.00 26.00 26.00 26.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00
## [421] 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00 25.00
## [433] 25.00 25.00 25.00 25.00 24.50 24.00 24.00 24.00 24.00 24.00 24.00 24.00
## [445] 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00
## [457] 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 24.00 23.50
## [469] 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00 23.00
## [481] 23.00 23.00 23.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00
## [493] 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00 22.00
## [505] 22.00 22.00 22.00 22.00 22.00 22.00 21.00 21.00 21.00 21.00 21.00 21.00
## [517] 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00
## [529] 21.00 21.00 21.00 21.00 21.00 21.00 20.50 20.00 20.00 20.00 20.00 20.00
## [541] 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 20.00 19.00 19.00
## [553] 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00
## [565] 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 19.00 18.00
## [577] 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00
## [589] 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00 18.00
## [601] 18.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00 17.00
## [613] 17.00 17.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00
## [625] 16.00 16.00 16.00 16.00 16.00 16.00 16.00 15.00 15.00 15.00 15.00 15.00
## [637] 14.50 14.00 14.00 14.00 14.00 14.00 14.00 13.00 13.00 12.00 11.00 11.00
## [649] 11.00 11.00 10.00 10.00 9.00 9.00 9.00 9.00 9.00 9.00 9.00 9.00
## [661] 8.00 8.00 8.00 8.00 7.00 7.00 7.00 6.00 6.00 6.00 5.00 5.00
## [673] 5.00 5.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
## [685] 3.00 3.00 3.00 3.00 3.00 3.00 2.00 2.00 2.00 2.00 2.00 2.00
## [697] 2.00 2.00 2.00 2.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 0.92
## [709] 0.83 0.83 0.75 0.75 0.67 0.42
&nsbp;
Ejercicio 8: vamos a clasificar a los pasajeros según su edad en
"mayores de edad"
y "menores de edad"
. Crea un función que, dada una edad, nos diga si es mayor o menor de edad. Aplícala después a nuestra variable Age
y guarda el resultado en una variable edad_recodificada
que añadamos a los datos originales
- Solución:
# Definimos función
menor_edad <- function(edad) {
salida <- ifelse(edad < 18, "menores de edad", "mayores de edad")
return(salida)
}
# Creamos nueva variable
titanic$edad_recodificada <- menor_edad(titanic$Age) # se aplica elemento a elemento
titanic$edad_recodificada # habrá NA
## [1] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [5] "mayores de edad" NA "mayores de edad" "menores de edad"
## [9] "mayores de edad" "menores de edad" "menores de edad" "mayores de edad"
## [13] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [17] "menores de edad" NA "mayores de edad" NA
## [21] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [25] "menores de edad" "mayores de edad" NA "mayores de edad"
## [29] NA NA "mayores de edad" NA
## [33] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [37] NA "mayores de edad" "mayores de edad" "menores de edad"
## [41] "mayores de edad" "mayores de edad" NA "menores de edad"
## [45] "mayores de edad" NA NA NA
## [49] NA "mayores de edad" "menores de edad" "mayores de edad"
## [53] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [57] "mayores de edad" "mayores de edad" "menores de edad" "menores de edad"
## [61] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [65] NA NA "mayores de edad" "mayores de edad"
## [69] "menores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [73] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [77] NA NA "menores de edad" "mayores de edad"
## [81] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [85] "menores de edad" "mayores de edad" "menores de edad" NA
## [89] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [93] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [97] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [101] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [105] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [109] "mayores de edad" NA "mayores de edad" "menores de edad"
## [113] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [117] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [121] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [125] "mayores de edad" "menores de edad" NA "mayores de edad"
## [129] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [133] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [137] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [141] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [145] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [149] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [153] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [157] "menores de edad" "mayores de edad" NA NA
## [161] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [165] "menores de edad" "menores de edad" NA "mayores de edad"
## [169] NA "mayores de edad" "mayores de edad" "menores de edad"
## [173] "menores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [177] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [181] NA NA "menores de edad" "menores de edad"
## [185] "menores de edad" NA NA "mayores de edad"
## [189] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [193] "mayores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [197] NA "mayores de edad" NA "mayores de edad"
## [201] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [205] "mayores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [209] "menores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [213] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [217] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [221] "menores de edad" "mayores de edad" "mayores de edad" NA
## [225] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [229] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [233] "mayores de edad" "menores de edad" "mayores de edad" NA
## [237] "mayores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [241] NA NA "mayores de edad" "mayores de edad"
## [245] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [249] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [253] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [257] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [261] NA "menores de edad" "mayores de edad" "mayores de edad"
## [265] NA "mayores de edad" "menores de edad" "mayores de edad"
## [269] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [273] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [277] "mayores de edad" NA "menores de edad" "mayores de edad"
## [281] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [285] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [289] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [293] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [297] "mayores de edad" "menores de edad" NA "mayores de edad"
## [301] NA NA "mayores de edad" NA
## [305] NA "menores de edad" NA "menores de edad"
## [309] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [313] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [317] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [321] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [325] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [329] "mayores de edad" "menores de edad" NA "mayores de edad"
## [333] "mayores de edad" "menores de edad" NA NA
## [337] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [341] "menores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [345] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [349] "menores de edad" "mayores de edad" "mayores de edad" NA
## [353] "menores de edad" "mayores de edad" NA "mayores de edad"
## [357] "mayores de edad" "mayores de edad" NA NA
## [361] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [365] NA "mayores de edad" "mayores de edad" NA
## [369] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [373] "mayores de edad" "mayores de edad" "menores de edad" NA
## [377] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [381] "mayores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [385] NA "mayores de edad" "menores de edad" "mayores de edad"
## [389] NA "menores de edad" "mayores de edad" "mayores de edad"
## [393] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [397] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [401] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [405] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [409] "mayores de edad" NA NA NA
## [413] "mayores de edad" NA "mayores de edad" NA
## [417] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [421] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [425] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [429] NA "mayores de edad" "mayores de edad" NA
## [433] "mayores de edad" "menores de edad" "mayores de edad" "menores de edad"
## [437] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [441] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [445] NA "menores de edad" "menores de edad" "mayores de edad"
## [449] "menores de edad" "mayores de edad" "mayores de edad" NA
## [453] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [457] "mayores de edad" NA "mayores de edad" NA
## [461] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [465] NA "mayores de edad" NA "mayores de edad"
## [469] NA "menores de edad" NA "mayores de edad"
## [473] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [477] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [481] "menores de edad" NA "mayores de edad" "mayores de edad"
## [485] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [489] "mayores de edad" "menores de edad" NA "mayores de edad"
## [493] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [497] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [501] "menores de edad" "mayores de edad" NA "mayores de edad"
## [505] "menores de edad" "mayores de edad" "mayores de edad" NA
## [509] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [513] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [517] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [521] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [525] NA "mayores de edad" "mayores de edad" NA
## [529] "mayores de edad" "mayores de edad" "menores de edad" NA
## [533] "menores de edad" NA "mayores de edad" "menores de edad"
## [537] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [541] "mayores de edad" "menores de edad" "menores de edad" "mayores de edad"
## [545] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [549] "mayores de edad" "menores de edad" "menores de edad" "mayores de edad"
## [553] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [557] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [561] NA "mayores de edad" "mayores de edad" NA
## [565] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [569] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [573] "mayores de edad" NA "menores de edad" "mayores de edad"
## [577] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [581] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [585] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [589] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [593] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [597] NA "mayores de edad" NA "mayores de edad"
## [601] "mayores de edad" NA NA "mayores de edad"
## [605] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [609] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [613] NA NA "mayores de edad" "mayores de edad"
## [617] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [621] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [625] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [629] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [633] "mayores de edad" NA "menores de edad" "mayores de edad"
## [637] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [641] "mayores de edad" "mayores de edad" "menores de edad" NA
## [645] "menores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [649] NA "mayores de edad" NA "mayores de edad"
## [653] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [657] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [661] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [665] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [669] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [673] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [677] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [681] NA "mayores de edad" "mayores de edad" "menores de edad"
## [685] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [689] "mayores de edad" "menores de edad" "mayores de edad" "menores de edad"
## [693] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [697] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [701] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [705] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [709] "mayores de edad" NA "mayores de edad" NA
## [713] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [717] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [721] "menores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [725] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [729] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [733] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [737] "mayores de edad" "mayores de edad" NA NA
## [741] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [745] "mayores de edad" "mayores de edad" "menores de edad" "mayores de edad"
## [749] "mayores de edad" "mayores de edad" "menores de edad" "menores de edad"
## [753] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [757] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [761] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [765] "menores de edad" "mayores de edad" NA "mayores de edad"
## [769] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [773] "mayores de edad" NA "mayores de edad" "mayores de edad"
## [777] NA "menores de edad" NA "mayores de edad"
## [781] "menores de edad" "menores de edad" "mayores de edad" NA
## [785] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [789] "menores de edad" "mayores de edad" NA "menores de edad"
## [793] NA NA "mayores de edad" "mayores de edad"
## [797] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [801] "mayores de edad" "mayores de edad" "menores de edad" "menores de edad"
## [805] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [809] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [813] "mayores de edad" "menores de edad" "mayores de edad" NA
## [817] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [821] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [825] "menores de edad" NA NA "menores de edad"
## [829] NA "mayores de edad" "menores de edad" "menores de edad"
## [833] NA "mayores de edad" "mayores de edad" "mayores de edad"
## [837] "mayores de edad" NA "mayores de edad" NA
## [841] "mayores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [845] "menores de edad" "mayores de edad" NA "mayores de edad"
## [849] "mayores de edad" NA "menores de edad" "mayores de edad"
## [853] "menores de edad" "menores de edad" "mayores de edad" "mayores de edad"
## [857] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [861] "mayores de edad" "mayores de edad" "mayores de edad" NA
## [865] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [869] NA "menores de edad" "mayores de edad" "mayores de edad"
## [873] "mayores de edad" "mayores de edad" "mayores de edad" "menores de edad"
## [877] "mayores de edad" "mayores de edad" NA "mayores de edad"
## [881] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [885] "mayores de edad" "mayores de edad" "mayores de edad" "mayores de edad"
## [889] NA "mayores de edad" "mayores de edad"
&nsbp;
Ejercicio 9: el accidente del Titanic se produjo el 15 de abril de 1912. Tomando dicha fecha como referencia, usa la edad de los pasajeros para añadir una nueva variable que sea la fecha de nacimiento.
- Solución:
library(lubridate)
# Fecha accidente
accidente <- as_date("1912/04/15")
# Creamos nueva variable: fecha del accidente - años
# (saldrán todos nacidos el 15 de abril, ya que no sabemos
# cuantos meses cumplían en el momento del accidente)
titanic$fecha_nacimiento <- accidente - titanic$Age
titanic$fecha_nacimiento
## [1] "1912-03-24" "1912-03-08" "1912-03-20" "1912-03-11" "1912-03-11"
## [6] NA "1912-02-21" "1912-04-13" "1912-03-19" "1912-04-01"
## [11] "1912-04-11" "1912-02-17" "1912-03-26" "1912-03-07" "1912-04-01"
## [16] "1912-02-20" "1912-04-13" NA "1912-03-15" NA
## [21] "1912-03-11" "1912-03-12" "1912-03-31" "1912-03-18" "1912-04-07"
## [26] "1912-03-08" NA "1912-03-27" NA NA
## [31] "1912-03-06" NA NA "1912-02-09" "1912-03-18"
## [36] "1912-03-04" NA "1912-03-25" "1912-03-28" "1912-04-01"
## [41] "1912-03-06" "1912-03-19" NA "1912-04-12" "1912-03-27"
## [46] NA NA NA NA "1912-03-28"
## [51] "1912-04-08" "1912-03-25" "1912-02-26" "1912-03-17" "1912-02-10"
## [56] NA "1912-03-25" "1912-03-17" "1912-04-10" "1912-04-04"
## [61] "1912-03-24" "1912-03-08" "1912-03-01" "1912-04-11" NA
## [66] NA "1912-03-17" "1912-03-27" "1912-03-29" "1912-03-20"
## [71] "1912-03-14" "1912-03-30" "1912-03-25" "1912-03-20" "1912-03-14"
## [76] "1912-03-21" NA NA "1912-04-14" "1912-03-16"
## [81] "1912-03-24" "1912-03-17" NA "1912-03-18" "1912-03-29"
## [86] "1912-03-13" "1912-03-30" NA "1912-03-23" "1912-03-22"
## [91] "1912-03-17" "1912-03-26" "1912-02-29" "1912-03-20" "1912-02-16"
## [96] NA "1912-02-04" "1912-03-23" "1912-03-12" "1912-03-12"
## [101] "1912-03-18" NA "1912-03-25" "1912-03-13" "1912-03-09"
## [106] "1912-03-18" "1912-03-25" NA "1912-03-08" NA
## [111] "1912-02-28" "1912-03-31" "1912-03-24" "1912-03-26" "1912-03-29"
## [116] "1912-03-25" "1912-02-04" "1912-03-17" "1912-03-22" "1912-04-13"
## [121] "1912-03-25" NA "1912-03-13" "1912-03-13" "1912-02-21"
## [126] "1912-04-03" NA "1912-03-22" NA "1912-03-01"
## [131] "1912-03-13" "1912-03-26" "1912-02-28" "1912-03-17" "1912-03-21"
## [136] "1912-03-23" "1912-03-27" "1912-03-09" "1912-03-30" "1912-03-22"
## [141] NA "1912-03-24" "1912-03-22" "1912-03-27" "1912-03-28"
## [146] "1912-03-27" "1912-03-19" "1912-04-06" "1912-03-09" "1912-03-04"
## [151] "1912-02-24" "1912-03-24" "1912-02-19" "1912-03-05" NA
## [156] "1912-02-24" "1912-03-30" "1912-03-16" NA NA
## [161] "1912-03-02" "1912-03-06" "1912-03-20" "1912-03-29" "1912-04-14"
## [166] "1912-04-06" NA "1912-03-01" NA "1912-03-18"
## [171] "1912-02-14" "1912-04-11" "1912-04-14" "1912-03-25" "1912-02-19"
## [176] "1912-03-28" NA "1912-02-25" "1912-03-16" "1912-03-10"
## [181] NA NA "1912-04-06" "1912-04-14" "1912-04-11"
## [186] NA NA "1912-03-01" "1912-03-06" "1912-03-10"
## [191] "1912-03-14" "1912-03-27" "1912-03-27" "1912-04-12" "1912-03-02"
## [196] "1912-02-17" NA "1912-03-04" NA "1912-03-22"
## [201] "1912-03-18" NA "1912-03-12" "1912-02-29" "1912-03-28"
## [206] "1912-04-13" "1912-03-14" "1912-03-20" "1912-03-30" "1912-03-06"
## [211] "1912-03-22" "1912-03-11" "1912-03-24" "1912-03-16" NA
## [216] "1912-03-15" "1912-03-19" "1912-03-04" "1912-03-14" "1912-03-16"
## [221] "1912-03-30" "1912-03-19" "1912-02-24" NA "1912-03-08"
## [226] "1912-03-24" "1912-03-27" "1912-03-25" "1912-03-28" NA
## [231] "1912-03-11" "1912-03-17" "1912-02-16" "1912-04-10" "1912-03-22"
## [236] NA "1912-03-02" "1912-04-07" "1912-03-27" "1912-03-13"
## [241] NA NA "1912-03-17" "1912-03-24" "1912-03-16"
## [246] "1912-03-02" "1912-03-21" "1912-03-22" "1912-03-09" "1912-02-21"
## [251] NA "1912-03-17" "1912-02-13" "1912-03-16" "1912-03-05"
## [256] "1912-03-17" NA "1912-03-16" "1912-03-11" "1912-02-25"
## [261] NA "1912-04-12" "1912-02-23" "1912-03-06" NA
## [266] "1912-03-10" "1912-03-30" "1912-03-21" "1912-02-17" "1912-03-11"
## [271] NA "1912-03-21" "1912-03-05" "1912-03-09" NA
## [276] "1912-02-12" "1912-03-01" NA "1912-04-08" "1912-03-11"
## [281] "1912-02-10" "1912-03-18" "1912-03-30" "1912-03-27" NA
## [286] "1912-03-13" "1912-03-16" "1912-03-24" "1912-03-04" "1912-03-24"
## [291] "1912-03-20" "1912-03-27" "1912-03-10" "1912-03-22" "1912-03-22"
## [296] NA "1912-03-22" "1912-04-13" NA "1912-02-25"
## [301] NA NA "1912-03-27" NA NA
## [306] "1912-04-14" NA "1912-03-29" "1912-03-16" "1912-03-16"
## [311] "1912-03-22" "1912-03-28" "1912-03-20" "1912-03-18" "1912-03-03"
## [316] "1912-03-20" "1912-03-22" "1912-02-21" "1912-03-15" "1912-03-06"
## [321] "1912-03-24" "1912-03-19" "1912-03-16" "1912-03-24" NA
## [326] "1912-03-10" "1912-02-14" "1912-03-10" "1912-03-15" "1912-03-30"
## [331] NA "1912-02-29" "1912-03-08" "1912-03-30" NA
## [336] NA "1912-03-17" "1912-03-05" "1912-03-01" "1912-03-01"
## [341] "1912-04-13" "1912-03-22" "1912-03-18" "1912-03-21" "1912-03-10"
## [346] "1912-03-22" "1912-03-06" NA "1912-04-12" "1912-03-04"
## [351] "1912-03-23" NA "1912-03-31" "1912-03-21" NA
## [356] "1912-03-18" "1912-03-24" "1912-03-08" NA NA
## [361] "1912-03-06" "1912-03-17" "1912-03-01" "1912-03-11" NA
## [366] "1912-03-16" "1912-02-15" NA NA "1912-03-22"
## [371] "1912-03-21" "1912-03-28" "1912-03-27" "1912-03-24" "1912-04-12"
## [376] NA "1912-03-24" "1912-03-19" "1912-03-26" "1912-03-27"
## [381] "1912-03-04" "1912-04-14" "1912-03-14" "1912-03-11" NA
## [386] "1912-03-28" "1912-04-14" "1912-03-10" NA "1912-03-29"
## [391] "1912-03-10" "1912-03-25" "1912-03-18" "1912-03-23" "1912-03-22"
## [396] "1912-03-24" "1912-03-15" "1912-02-29" "1912-03-23" "1912-03-18"
## [401] "1912-03-07" "1912-03-20" "1912-03-25" "1912-03-18" "1912-03-26"
## [406] "1912-03-12" "1912-02-24" "1912-04-12" "1912-03-25" NA
## [411] NA NA "1912-03-13" NA "1912-03-02"
## [416] NA "1912-03-12" "1912-03-28" "1912-03-16" "1912-04-05"
## [421] NA "1912-03-25" "1912-03-17" "1912-03-18" "1912-03-28"
## [426] NA "1912-03-18" "1912-03-27" NA "1912-03-14"
## [431] "1912-03-18" NA "1912-03-04" "1912-03-29" "1912-02-25"
## [436] "1912-04-01" "1912-03-25" "1912-03-22" "1912-02-11" "1912-03-15"
## [441] "1912-03-01" "1912-03-26" "1912-03-21" "1912-03-18" NA
## [446] "1912-04-11" "1912-04-02" "1912-03-12" "1912-04-10" "1912-02-23"
## [451] "1912-03-10" NA "1912-03-16" "1912-02-26" NA
## [456] "1912-03-17" "1912-02-10" NA "1912-02-25" NA
## [461] "1912-02-27" "1912-03-12" "1912-02-28" "1912-02-27" NA
## [466] "1912-03-08" NA "1912-02-19" NA "1912-04-14"
## [471] NA "1912-03-08" "1912-03-13" "1912-03-23" "1912-03-24"
## [476] NA "1912-03-12" "1912-03-17" "1912-03-24" "1912-04-13"
## [481] "1912-04-06" NA "1912-02-25" "1912-02-12" "1912-03-21"
## [486] NA "1912-03-11" "1912-02-17" "1912-03-16" "1912-04-06"
## [491] NA "1912-03-25" "1912-02-20" "1912-02-04" "1912-03-25"
## [496] NA "1912-02-21" NA "1912-03-21" "1912-03-22"
## [501] "1912-03-29" "1912-03-25" NA "1912-03-09" "1912-03-30"
## [506] "1912-03-28" "1912-03-13" NA "1912-03-18" "1912-03-20"
## [511] "1912-03-17" NA "1912-03-10" "1912-02-21" "1912-03-22"
## [516] "1912-02-28" "1912-03-12" NA "1912-03-10" "1912-03-14"
## [521] "1912-03-16" "1912-03-24" NA "1912-03-02" NA
## [526] "1912-03-05" "1912-02-25" NA "1912-03-07" "1912-03-23"
## [531] "1912-04-13" NA "1912-03-29" NA "1912-03-16"
## [536] "1912-04-08" "1912-03-01" "1912-03-16" NA "1912-03-24"
## [541] "1912-03-10" "1912-04-06" "1912-04-04" "1912-03-14" "1912-02-25"
## [546] "1912-02-11" "1912-03-27" NA "1912-03-13" "1912-04-07"
## [551] "1912-03-29" "1912-03-19" NA "1912-03-24" "1912-03-24"
## [556] "1912-02-13" "1912-02-27" NA "1912-03-07" "1912-03-10"
## [561] NA "1912-03-06" "1912-03-18" NA NA
## [566] "1912-03-22" "1912-03-27" "1912-03-17" NA "1912-03-14"
## [571] "1912-02-13" "1912-02-22" "1912-03-10" NA "1912-03-30"
## [576] "1912-03-27" "1912-03-12" "1912-03-07" NA "1912-03-14"
## [581] "1912-03-21" "1912-03-07" "1912-02-21" "1912-03-10" NA
## [586] "1912-03-28" "1912-02-28" "1912-02-15" "1912-03-24" NA
## [591] "1912-03-11" "1912-02-23" "1912-02-28" NA "1912-03-09"
## [596] "1912-03-10" NA "1912-02-26" NA "1912-02-26"
## [601] "1912-03-22" NA NA "1912-03-02" "1912-03-11"
## [606] "1912-03-10" "1912-03-16" "1912-03-19" "1912-03-24" "1912-03-06"
## [611] "1912-03-07" NA NA NA "1912-03-11"
## [616] "1912-03-22" "1912-03-12" "1912-03-20" "1912-04-11" "1912-03-20"
## [621] "1912-03-19" "1912-03-04" "1912-03-26" "1912-03-25" "1912-03-25"
## [626] "1912-02-14" "1912-02-18" "1912-03-25" "1912-03-20" NA
## [631] "1912-01-26" "1912-02-24" "1912-03-14" NA "1912-04-06"
## [636] "1912-03-18" "1912-03-14" "1912-03-15" "1912-03-05" NA
## [641] "1912-03-26" "1912-03-22" "1912-04-13" NA "1912-04-14"
## [646] "1912-02-27" "1912-03-27" "1912-02-19" NA "1912-03-23"
## [651] NA "1912-03-28" "1912-03-25" NA "1912-03-28"
## [656] "1912-03-22" NA "1912-03-14" "1912-03-23" "1912-02-17"
## [661] "1912-02-25" "1912-03-06" "1912-02-28" "1912-03-10" "1912-03-26"
## [666] "1912-03-14" "1912-03-21" NA "1912-03-03" NA
## [671] "1912-03-06" "1912-03-15" "1912-02-05" "1912-03-15" NA
## [676] "1912-03-28" "1912-03-21" "1912-03-28" "1912-03-03" "1912-03-10"
## [681] NA "1912-03-19" "1912-03-26" "1912-04-01" "1912-02-15"
## [686] "1912-03-21" "1912-04-01" "1912-03-27" "1912-03-28" "1912-03-31"
## [691] "1912-03-15" "1912-04-11" NA "1912-03-21" "1912-02-15"
## [696] "1912-02-23" "1912-03-02" NA "1912-02-26" "1912-03-04"
## [701] "1912-03-28" "1912-03-11" "1912-03-28" "1912-03-21" "1912-03-20"
## [706] "1912-03-07" "1912-03-01" "1912-03-04" "1912-03-24" NA
## [711] "1912-03-22" NA "1912-02-27" "1912-03-17" "1912-02-23"
## [716] "1912-03-27" "1912-03-08" "1912-03-19" NA "1912-03-13"
## [721] "1912-04-09" "1912-03-29" "1912-03-12" "1912-02-25" "1912-03-19"
## [726] "1912-03-26" "1912-03-16" NA "1912-03-21" "1912-03-21"
## [731] "1912-03-17" "1912-04-04" NA "1912-03-23" "1912-03-23"
## [736] "1912-03-17" "1912-02-27" "1912-03-11" NA NA
## [741] NA "1912-03-10" "1912-03-25" "1912-03-22" "1912-03-15"
## [746] "1912-02-05" "1912-03-30" "1912-03-16" "1912-03-27" "1912-03-15"
## [751] "1912-04-11" "1912-04-09" "1912-03-13" "1912-03-23" "1912-02-27"
## [756] "1912-04-14" "1912-03-18" "1912-03-28" "1912-03-12" "1912-03-13"
## [761] NA "1912-03-05" "1912-03-26" "1912-03-10" "1912-03-30"
## [766] "1912-02-24" NA "1912-03-15" NA "1912-03-14"
## [771] "1912-03-22" "1912-02-27" "1912-02-18" NA "1912-02-21"
## [776] "1912-03-28" NA "1912-04-10" NA "1912-03-03"
## [781] "1912-04-02" "1912-03-29" "1912-03-17" NA "1912-03-21"
## [786] "1912-03-21" "1912-03-28" "1912-04-07" "1912-04-14" "1912-02-29"
## [791] NA "1912-03-30" NA NA "1912-03-21"
## [796] "1912-03-07" "1912-02-26" "1912-03-15" "1912-03-16" "1912-03-16"
## [801] "1912-03-12" "1912-03-15" "1912-04-04" "1912-04-14" "1912-03-19"
## [806] "1912-03-15" "1912-03-07" "1912-03-28" "1912-03-07" "1912-03-13"
## [811] "1912-03-20" "1912-03-07" "1912-03-11" "1912-04-09" "1912-03-15"
## [816] NA "1912-03-23" "1912-03-15" "1912-03-03" "1912-04-05"
## [821] "1912-02-23" "1912-03-19" "1912-03-08" "1912-03-19" "1912-04-13"
## [826] NA NA "1912-04-14" NA "1912-02-13"
## [831] "1912-03-31" "1912-04-14" NA "1912-03-23" "1912-03-28"
## [836] "1912-03-07" "1912-03-25" NA "1912-03-14" NA
## [841] "1912-03-26" "1912-03-30" "1912-03-16" "1912-03-11" "1912-03-29"
## [846] "1912-03-04" NA "1912-03-11" "1912-03-18" NA
## [851] "1912-04-11" "1912-02-01" "1912-04-06" "1912-03-30" "1912-03-02"
## [856] "1912-03-28" "1912-03-01" "1912-02-24" "1912-03-22" NA
## [861] "1912-03-05" "1912-03-25" "1912-02-27" NA "1912-03-22"
## [866] "1912-03-04" "1912-03-19" "1912-03-15" NA "1912-04-11"
## [871] "1912-03-20" "1912-02-28" "1912-03-13" "1912-02-28" "1912-03-18"
## [876] "1912-03-31" "1912-03-26" "1912-03-27" NA "1912-02-19"
## [881] "1912-03-21" "1912-03-13" "1912-03-24" "1912-03-18" "1912-03-21"
## [886] "1912-03-07" "1912-03-19" "1912-03-27" NA "1912-03-20"
## [891] "1912-03-14"