📝 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

(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
Multiplicación de a y b.

Imagen/gráfica 0.1: Multiplicación de a y b.

 

📝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
Multiplicación de a y b guardando el resultado.

Imagen/gráfica 0.2: Multiplicación de a y b guardando el resultado.

 

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

(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:

(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:
library(stringr)
x <- "mi código postal es 28045"
y <- str_sub(x, 3, 17)
y
## [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

(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:
rep(c(1, 2, 3), 5) # repetimos patrón (1, 2, 3) 5 veces
##  [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
rep(c(1, 2, 3), each = 5) # repetimos patrón alternado
##  [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

(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:
# Vector de números
x <- c(1, 10, -1, 2)

# Suma
sum(x)
## [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:
x<- c(1, 10, -1, 2)

# Encontrando el lugar que ocupa el máximo y mínimo
which.max(x)
## [1] 2
## [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

(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:
cumple <- as_date("1989-09-10") # por defecto

# Bisiesto
leap_year(cumple)
## [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:
seconds(today() - cumple)
## [1] "12058S"

 

0.5 Datos estructurados

(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
# Dimensiones transpuesta: pasa de ser 3x7 a 7x3
dim(t(x))
## [1] 7 3
ncol(t(x)) # número de columnas de la transpuesta
## [1] 3
nrow(t(x)) # número de filas de la transpuesta
## [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:
# Matriz
matriz <- matrix(1:12, nrow = 4)

# Suma por filas
apply(matriz, MARGIN = 1, FUN = "sum")
## [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:
# Matriz
matriz <- matrix(1:12, nrow = 4)

#  media de todos
mean(matriz)
## [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:
library(datasets)
names(airquality)
## [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:
# Filtramos filas
filtro_fila <-
  subset(airquality, subset = !(Month %in% c(7, 8)))
filtro_fila
##     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.

filtro_col <- subset(.,  select = c("Ozone"))
filtro_col

  • Solución:
# Filtramos columnas
filtro_col <- subset(airquality,  select = c("Ozone", "Temp"))
filtro_col
##     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:
# Filas borradas
nrow(airquality) - nrow(filtro)
## [1] 122
# Cambiamos nombres a castellano del conjunto filtrado
names(filtro) <- c("temperatura", "viento")

 

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

(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

(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:
# Cargamos librería
library(lubridate)

# Fecha-hora actual
fecha_actual <- now()

# Estructura if
if (hour(fecha_actual) > 21) {
  
  cat("Buenas noches") # print/cat dos formas de imprimir por pantalla
}

 

📝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

(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:
# Una forma
for (i in seq(1, 9, by = 2)) {
  
  print(i + 1)
}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
# Otra
for (i in c(1, 3, 5, 7, 9)) {
  
  print(i + 1)
}
## [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:
for (i in 1:8) {
  
  print(glue("La temperatura es de {airquality$Temp[i]}ºF"))
}
## 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

(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

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