1 Instrucción para realizar la tarea
Será enviada la tarea todos los días a las 10 am hora de Chile dividida en tres partes la cual se espera sea resuelta en la jornada diaria. Cada parte debe ser enviada a las 1 pm, 4 pm y 7 pm hora de Chile para ser evaluada en conjunto en unos 15 minutos. Las respuestas se requieren en formato Rpubs, que deberá quedar registrado en la hora indicada en nuestro grupo Data Science DI de Skype, en el que está incluído Patricio para que pueda darle rápido seguimiento a la evolución del proceso de aprendizaje.
Al desarrollar la tarea, y después de consultar brevemente google y no encontrar respuesta, contactarse de inmediato conmigo por favor para no perder tiempo y aprender lo más rápido posible.
2 Teoría
2.1 Vectores
Existen dos tipos de estructuras de una dimensión en R: vectores y listas. Los primeros son los clásicos vectores de las matemáticas: admiten sólo un tipo de dato; los segundos múltiples. Las columnas de una tabla (dataframe) son vectores.
R posee una serie de dataframes de prueba con los que se puede ejercitar. En éste Rpubs utilizaremos algunos.
Puromycin: Velocidad de reacción de una reacción enzimática a la puromicina, un antibiótico.
Despleguemos los primeros 5 registros:
head(Puromycin,8)
## conc rate state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
## 7 0.22 159 treated
## 8 0.22 152 treated
2.1.1 Creación de vectores
El código siguiente crea dos vectores, uno numérico y otro categórico de tipo factor. Un factor es una lista con dos valores, generalmente un número y un string. Es útil su uso cuando trabajamos asignándole un código a una categoría.
<- 1:10
x <- Puromycin$state y
Los desplegamos simplemente llamándolos:
x
## [1] 1 2 3 4 5 6 7 8 9 10
y
## [1] treated treated treated treated treated treated treated
## [8] treated treated treated treated treated untreated untreated
## [15] untreated untreated untreated untreated untreated untreated untreated
## [22] untreated untreated
## Levels: treated untreated
Para construir vectores arbitrarios usamos la función de concatenación o los dos puntos:
1:5
## [1] 1 2 3 4 5
Al revés:
5:1
## [1] 5 4 3 2 1
En dos partes:
c(1:5, 5:1)
## [1] 1 2 3 4 5 5 4 3 2 1
En forma individual:
c(1, 5, -1, 4)
## [1] 1 5 -1 4
Como strings:
c("uno", "dos", "tres")
## [1] "uno" "dos" "tres"
Si un elemento no es asignado a un objeto, se muestra en pantalla.
2.1.1.1 Secuencias y repeticiones
Construyamos una secuencia del 1 al 4:
seq(1, 4)
## [1] 1 2 3 4
Que se repita 4 veces:
rep(1:4, 4)
## [1] 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Ahora que una secuencia del 1 al 4 se despliegue en orden:
rep(1:4, each = 4)
## [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
Del 1 al 4 2 veces:
rep(1:4, 2)
## [1] 1 2 3 4 1 2 3 4
Del 1 al 4 repitiendo cada uno dos veces primero:
rep(1:4, each = 2)
## [1] 1 1 2 2 3 3 4 4
Del 1 al 4 cada vez 2 veces:
rep(1:4, c(2,2,2,2))
## [1] 1 1 2 2 3 3 4 4
Del 1 al 4 en veces descendentes:
rep(1:4, times = 4:1)
## [1] 1 1 1 1 2 2 2 3 3 4
Del 1 al 4 segun una orden de concatenacion:
rep(1:4, c(2,1,2,1))
## [1] 1 1 2 3 3 4
Del 1 al 4, con saltos cada 2 pero solo hasta la vez cuarta:
rep(1:4, each = 2, len = 4)
## [1] 1 1 2 2
rep(1:4, each = 2, len = 10)
## [1] 1 1 2 2 3 3 4 4 1 1
Del 1 al 4 que se repita dos veces tres veces:
rep(1:4, each = 2, times = 3)
## [1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
2.1.2 Inspección de vectores
Graficamos nuestra base de datos:
plot(Puromycin)
length cuenta columnas:
length(Puromycin)
## [1] 3
La función table cuenta los elementos de un vector por valor. Es una función sumamente importante para examinar vectores categóricos:
table(Puromycin) # ¡muy importante!
## , , state = treated
##
## rate
## conc 47 51 67 76 84 86 97 98 107 115 123 124 131 139 144 152 158 159 160 191
## 0.02 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 0.06 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
## 0.11 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0
## 0.22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
## 0.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
## 1.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## rate
## conc 200 201 207
## 0.02 0 0 0
## 0.06 0 0 0
## 0.11 0 0 0
## 0.22 0 0 0
## 0.56 0 1 0
## 1.1 1 0 1
##
## , , state = untreated
##
## rate
## conc 47 51 67 76 84 86 97 98 107 115 123 124 131 139 144 152 158 159 160 191
## 0.02 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 0.06 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 0.11 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0
## 0.22 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
## 0.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
## 1.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
## rate
## conc 200 201 207
## 0.02 0 0 0
## 0.06 0 0 0
## 0.11 0 0 0
## 0.22 0 0 0
## 0.56 0 0 0
## 1.1 0 0 0
summary ofrece un pequeño resumen del contenido de un vector. De hecho, cuando aplicábamos summary a una tabla, obteníamos el summary de cada una de sus columnas:
summary(Puromycin)
## conc rate state
## Min. :0.0200 Min. : 47.0 treated :12
## 1st Qu.:0.0600 1st Qu.: 91.5 untreated:11
## Median :0.1100 Median :124.0
## Mean :0.3122 Mean :126.8
## 3rd Qu.:0.5600 3rd Qu.:158.5
## Max. :1.1000 Max. :207.0
Desplegamos los primeros seis registros:
head(Puromycin)
## conc rate state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
Desplegamos los últimos seis registros:
tail(Puromycin)
## conc rate state
## 18 0.11 115 untreated
## 19 0.22 131 untreated
## 20 0.22 124 untreated
## 21 0.56 144 untreated
## 22 0.56 158 untreated
## 23 1.10 160 untreated
Repitamos: La función table cuenta los elementos de un vector por valor. Es una función sumamente importante para examinar vectores categóricos:
table(Puromycin$state)
##
## treated untreated
## 12 11
Repitamos: summary ofrece un pequeño resumen del contenido de un vector. De hecho, cuando aplicábamos summary a una tabla, obteníamos el summary de cada una de sus columnas.
2.1.3 Selecciones
Para seleccionar elementos de un vector se usa el corchete []. Pero, a diferencia de lo que ocurre con los dataframes, como los vectores son objetos unidimensionales, no se utiliza la coma para separar entre filas y columnas: no se utiliza la coma. Obviamente, el corchete sigue admitiendo no sólo los índices de los elementos que se quieren extraer, sino que además permite utilizar condiciones lógicas, etc.
Veamos algunos ejemplos:
Elevamos al cuadrado:
<- 6
x <- x^2
x x
## [1] 36
Seleccionamos los primeros tres elementos:
<- seq(1,3,1)
x <- x[1:3]
y y
## [1] 1 2 3
Tomamos el elemento primero y tercero:
<- seq(1,3,1)
x c(1,3)] x[
## [1] 1 3
Seleccionamos los mayores a 25:
<- seq(1,30,1)
x > 25] x[x
## [1] 26 27 28 29 30
Extraemos a la inversa los tres primeros elementos:
<- seq(1,30,1)
x 3:1] x[
## [1] 3 2 1
Eliminamos los dos primeros valores:
<- seq(1,30,1)
x -(1:2)] x[
## [1] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
## [26] 28 29 30
Eliminamos el último valor:
<- seq(1,30,1)
x -length(x)] x[
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29
El corchete también permite seleccionar elementos de un vector por nombre. En efecto, en R se pueden asociar nombres a los elementos de un vector. Lo hace automáticamente, por ejemplo, table (para poder saber a qué etiqueta corresponde cada conteo):
<- table(Puromycin$state)
z "untreated"] z[
## untreated
## 11
c("treated", "untreated")] z[
##
## treated untreated
## 12 11
Una propiedad muy importante del corchete es que permite, además de seleccionar, cambiar el contenido de los elementos seleccionados de un vector. Por ejemplo:
<- 1:10
z < 5] <- 100
z[z z
## [1] 100 100 100 100 5 6 7 8 9 10
Reemplazar subselecciones es muy útil: permitirá, por ejemplo, cambiar las edades negativas por un valor con sentido, sustituir los nulos por un determinado valor por defecto, reemplazar los valores que excedan un tope por dicho tope, etc. El nombre de las columnas de una tabla también es un vector. Por eso, para cambiar el nombre de una columna podemos hacer lo siguiente:
<- Puromycin # una copia de iris
mi.Puromycin colnames(mi.Puromycin)[2] <- "Especie"
mi.Puromycin
## conc Especie state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
## 7 0.22 159 treated
## 8 0.22 152 treated
## 9 0.56 191 treated
## 10 0.56 201 treated
## 11 1.10 207 treated
## 12 1.10 200 treated
## 13 0.02 67 untreated
## 14 0.02 51 untreated
## 15 0.06 84 untreated
## 16 0.06 86 untreated
## 17 0.11 98 untreated
## 18 0.11 115 untreated
## 19 0.22 131 untreated
## 20 0.22 124 untreated
## 21 0.56 144 untreated
## 22 0.56 158 untreated
## 23 1.10 160 untreated
Lo mismo ocurre con los nombres de un vector, aunque en este caso, la función correspondiente es names:
<- table(mi.Puromycin$Especie)
z names(z)
## [1] "47" "51" "67" "76" "84" "86" "97" "98" "107" "115" "123" "124"
## [13] "131" "139" "144" "152" "158" "159" "160" "191" "200" "201" "207"
names(z)[1] <- "A"
names(z)
## [1] "A" "51" "67" "76" "84" "86" "97" "98" "107" "115" "123" "124"
## [13] "131" "139" "144" "152" "158" "159" "160" "191" "200" "201" "207"
Frecuentemente se quiere muestrear un vector, es decir, obtener una serie de elementos al azar dentro de dicho vector. Para ello se utiliza la función sample:
sample(x, 4)
## [1] 21 20 2 15
sample(x, 100, replace = TRUE) # manera correcta
## [1] 9 21 21 16 26 1 3 4 20 9 29 16 2 8 19 7 14 8 9 28 12 18 9 10 7
## [26] 6 23 16 4 13 28 19 7 23 18 25 15 7 14 6 18 3 17 3 28 11 30 27 17 11
## [51] 18 10 20 20 4 13 19 2 19 8 18 5 6 15 25 9 20 17 11 5 11 5 16 22 28
## [76] 11 19 25 1 15 8 17 30 29 18 25 29 30 15 14 7 15 25 13 1 25 5 4 26 29
La función sample trata el vector como una urna y a sus elementos como bolas contenidas en ella que va extrayendo al azar. Obviamente, es incapaz de extraer más elementos de los que contiene la urna. Pero existe el la opción de que el muestreo se realice con reemplazamiento, i.e., de modo que cada vez que sample extraiga una bola, la reintroduzca en la urna.
El muestreo de vectores es fundamental en diversos ámbitos.
sample(x, 100) # ¡falla!
2.1.4 Orden
Existen tres funciones fundamentales relacionadas con la ordenación de vectores: order, sort y rank. sort ordena los elementos de un vector, i.e., crea una copia de dicho vector con sus elementos ordenados.
<- c(4, 5, 3, 2, 1, 2)
x sort(x)
## [1] 1 2 2 3 4 5
La función order, que ya vimos cuando ordenamos tablas, es tal que sort(x) es lo mismo que x[order(x)]. Es decir, devuelve los índices de los elementos del vector de menor a mayor:
x
## [1] 4 5 3 2 1 2
order(x)
## [1] 5 4 6 3 1 2
order(x)] x[
## [1] 1 2 2 3 4 5
El código anterior muestra cómo para ordernar x hay que tomar primero el elemento quinto elemento de x; luego, el cuarto; después, el sexto, etc. La función rank indica la posición de los elementos de un vector: el primero, el segundo, etc.
rank(x)
## [1] 5.0 6.0 4.0 2.5 1.0 2.5
rank(x, ties = "first")
## [1] 5 6 4 2 1 3
Si x contuviese los tiempos de los velocistas en los 100 metros lisos, rank(x) nos indicaría quién es el primero en llegar a la meta, quién es el segundo, etc.
rank(x) es una transformación no lineal de x que puede ser útil para normalizar datos en algunos contextos.
2.1.5 Operaciones matemáticas y vectorización
R puede ser usado como una calculadora:
2+2
## [1] 4
<- 4*(3+5)^2
x / 10 x
## [1] 25.6
En R se puede operar sobre vectores igual que se opera sobre números. De hecho, en R, un número es un vector numérico de longitud 1:
c(length(2), length(x))
## [1] 1 1
Así que se pueden hacer cosas tales como
<- 1:10
x 2*x
## [1] 2 4 6 8 10 12 14 16 18 20
2*x + 1
## [1] 3 5 7 9 11 13 15 17 19 21
^2 x
## [1] 1 4 9 16 25 36 49 64 81 100
*x x
## [1] 1 4 9 16 25 36 49 64 81 100
Operaciones como las anteriores están vectorizadas, i.e., admiten un vector como argumento y operan sobre cada uno de los elementos. Generalmente, las operaciones vectorizadas son muy rápidas en R. Muchos problemas de rendimiento en R se resuelven, de hecho, utilizando versiones vectorizadas del código ineficiente.
La operación a la que se refiere el ejercicio anterior se denomina reciclado de vectores. Cuando se opera con dos vectores (por ejemplo, para multiplicarlos) con longitudes distintas, el más corto se recicla (es decir, se repite) tantas veces como sea necesario hasta alcanzar la longitud del más largo. Si la longitud del más corto no divide exactamente la del más largo (p.e., uno tiene longitud 10 y otro, longitud 3), R recorta la parte reciclada sobrante y lanza un warning. El lector está invitado a consultar cómo construir con R una calculadora de hipotecas, que ilustra el uso de la vectorización en un problema menos trivial que los anteriores, en el capítulo dedicado a ejemplos de uso.
3 Tareas
Tarea 1.1.1
Crea el vector que numera las filas de iris (es decir, que contenga los números del 1 hasta el número de filas de iris). Vamos a desplegar los primeros 5 registros del dataFrame iris
$datos<-1:nrow(iris)
irishead(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species datos
## 1 5.1 3.5 1.4 0.2 setosa 1
## 2 4.9 3.0 1.4 0.2 setosa 2
## 3 4.7 3.2 1.3 0.2 setosa 3
## 4 4.6 3.1 1.5 0.2 setosa 4
## 5 5.0 3.6 1.4 0.2 setosa 5
## 6 5.4 3.9 1.7 0.4 setosa 6
Tarea 1.1.2
Crea el patrón 1, 1.1, 1.2,…, 2. Existen varias maneras de hacerlo. Una de ellas es utilizar el argumento by de seq.
seq(1, 2, 0.1)
## [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0
Tarea 1.1.3
Selecciona las columnas 1, 2 y 5 de iris
library(tidyverse)
head(iris,5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species datos
## 1 5.1 3.5 1.4 0.2 setosa 1
## 2 4.9 3.0 1.4 0.2 setosa 2
## 3 4.7 3.2 1.3 0.2 setosa 3
## 4 4.6 3.1 1.5 0.2 setosa 4
## 5 5.0 3.6 1.4 0.2 setosa 5
library(tidyverse)
#rm(iris)
%>% dplyr::select(Sepal.Length,Sepal.Width,Species) iris
## Sepal.Length Sepal.Width Species
## 1 5.1 3.5 setosa
## 2 4.9 3.0 setosa
## 3 4.7 3.2 setosa
## 4 4.6 3.1 setosa
## 5 5.0 3.6 setosa
## 6 5.4 3.9 setosa
## 7 4.6 3.4 setosa
## 8 5.0 3.4 setosa
## 9 4.4 2.9 setosa
## 10 4.9 3.1 setosa
## 11 5.4 3.7 setosa
## 12 4.8 3.4 setosa
## 13 4.8 3.0 setosa
## 14 4.3 3.0 setosa
## 15 5.8 4.0 setosa
## 16 5.7 4.4 setosa
## 17 5.4 3.9 setosa
## 18 5.1 3.5 setosa
## 19 5.7 3.8 setosa
## 20 5.1 3.8 setosa
## 21 5.4 3.4 setosa
## 22 5.1 3.7 setosa
## 23 4.6 3.6 setosa
## 24 5.1 3.3 setosa
## 25 4.8 3.4 setosa
## 26 5.0 3.0 setosa
## 27 5.0 3.4 setosa
## 28 5.2 3.5 setosa
## 29 5.2 3.4 setosa
## 30 4.7 3.2 setosa
## 31 4.8 3.1 setosa
## 32 5.4 3.4 setosa
## 33 5.2 4.1 setosa
## 34 5.5 4.2 setosa
## 35 4.9 3.1 setosa
## 36 5.0 3.2 setosa
## 37 5.5 3.5 setosa
## 38 4.9 3.6 setosa
## 39 4.4 3.0 setosa
## 40 5.1 3.4 setosa
## 41 5.0 3.5 setosa
## 42 4.5 2.3 setosa
## 43 4.4 3.2 setosa
## 44 5.0 3.5 setosa
## 45 5.1 3.8 setosa
## 46 4.8 3.0 setosa
## 47 5.1 3.8 setosa
## 48 4.6 3.2 setosa
## 49 5.3 3.7 setosa
## 50 5.0 3.3 setosa
## 51 7.0 3.2 versicolor
## 52 6.4 3.2 versicolor
## 53 6.9 3.1 versicolor
## 54 5.5 2.3 versicolor
## 55 6.5 2.8 versicolor
## 56 5.7 2.8 versicolor
## 57 6.3 3.3 versicolor
## 58 4.9 2.4 versicolor
## 59 6.6 2.9 versicolor
## 60 5.2 2.7 versicolor
## 61 5.0 2.0 versicolor
## 62 5.9 3.0 versicolor
## 63 6.0 2.2 versicolor
## 64 6.1 2.9 versicolor
## 65 5.6 2.9 versicolor
## 66 6.7 3.1 versicolor
## 67 5.6 3.0 versicolor
## 68 5.8 2.7 versicolor
## 69 6.2 2.2 versicolor
## 70 5.6 2.5 versicolor
## 71 5.9 3.2 versicolor
## 72 6.1 2.8 versicolor
## 73 6.3 2.5 versicolor
## 74 6.1 2.8 versicolor
## 75 6.4 2.9 versicolor
## 76 6.6 3.0 versicolor
## 77 6.8 2.8 versicolor
## 78 6.7 3.0 versicolor
## 79 6.0 2.9 versicolor
## 80 5.7 2.6 versicolor
## 81 5.5 2.4 versicolor
## 82 5.5 2.4 versicolor
## 83 5.8 2.7 versicolor
## 84 6.0 2.7 versicolor
## 85 5.4 3.0 versicolor
## 86 6.0 3.4 versicolor
## 87 6.7 3.1 versicolor
## 88 6.3 2.3 versicolor
## 89 5.6 3.0 versicolor
## 90 5.5 2.5 versicolor
## 91 5.5 2.6 versicolor
## 92 6.1 3.0 versicolor
## 93 5.8 2.6 versicolor
## 94 5.0 2.3 versicolor
## 95 5.6 2.7 versicolor
## 96 5.7 3.0 versicolor
## 97 5.7 2.9 versicolor
## 98 6.2 2.9 versicolor
## 99 5.1 2.5 versicolor
## 100 5.7 2.8 versicolor
## 101 6.3 3.3 virginica
## 102 5.8 2.7 virginica
## 103 7.1 3.0 virginica
## 104 6.3 2.9 virginica
## 105 6.5 3.0 virginica
## 106 7.6 3.0 virginica
## 107 4.9 2.5 virginica
## 108 7.3 2.9 virginica
## 109 6.7 2.5 virginica
## 110 7.2 3.6 virginica
## 111 6.5 3.2 virginica
## 112 6.4 2.7 virginica
## 113 6.8 3.0 virginica
## 114 5.7 2.5 virginica
## 115 5.8 2.8 virginica
## 116 6.4 3.2 virginica
## 117 6.5 3.0 virginica
## 118 7.7 3.8 virginica
## 119 7.7 2.6 virginica
## 120 6.0 2.2 virginica
## 121 6.9 3.2 virginica
## 122 5.6 2.8 virginica
## 123 7.7 2.8 virginica
## 124 6.3 2.7 virginica
## 125 6.7 3.3 virginica
## 126 7.2 3.2 virginica
## 127 6.2 2.8 virginica
## 128 6.1 3.0 virginica
## 129 6.4 2.8 virginica
## 130 7.2 3.0 virginica
## 131 7.4 2.8 virginica
## 132 7.9 3.8 virginica
## 133 6.4 2.8 virginica
## 134 6.3 2.8 virginica
## 135 6.1 2.6 virginica
## 136 7.7 3.0 virginica
## 137 6.3 3.4 virginica
## 138 6.4 3.1 virginica
## 139 6.0 3.0 virginica
## 140 6.9 3.1 virginica
## 141 6.7 3.1 virginica
## 142 6.9 3.1 virginica
## 143 5.8 2.7 virginica
## 144 6.8 3.2 virginica
## 145 6.7 3.3 virginica
## 146 6.7 3.0 virginica
## 147 6.3 2.5 virginica
## 148 6.5 3.0 virginica
## 149 6.2 3.4 virginica
## 150 5.9 3.0 virginica
head(iris,5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species datos
## 1 5.1 3.5 1.4 0.2 setosa 1
## 2 4.9 3.0 1.4 0.2 setosa 2
## 3 4.7 3.2 1.3 0.2 setosa 3
## 4 4.6 3.1 1.5 0.2 setosa 4
## 5 5.0 3.6 1.4 0.2 setosa 5
%>% dplyr::select(1,2,5) iris
## Sepal.Length Sepal.Width Species
## 1 5.1 3.5 setosa
## 2 4.9 3.0 setosa
## 3 4.7 3.2 setosa
## 4 4.6 3.1 setosa
## 5 5.0 3.6 setosa
## 6 5.4 3.9 setosa
## 7 4.6 3.4 setosa
## 8 5.0 3.4 setosa
## 9 4.4 2.9 setosa
## 10 4.9 3.1 setosa
## 11 5.4 3.7 setosa
## 12 4.8 3.4 setosa
## 13 4.8 3.0 setosa
## 14 4.3 3.0 setosa
## 15 5.8 4.0 setosa
## 16 5.7 4.4 setosa
## 17 5.4 3.9 setosa
## 18 5.1 3.5 setosa
## 19 5.7 3.8 setosa
## 20 5.1 3.8 setosa
## 21 5.4 3.4 setosa
## 22 5.1 3.7 setosa
## 23 4.6 3.6 setosa
## 24 5.1 3.3 setosa
## 25 4.8 3.4 setosa
## 26 5.0 3.0 setosa
## 27 5.0 3.4 setosa
## 28 5.2 3.5 setosa
## 29 5.2 3.4 setosa
## 30 4.7 3.2 setosa
## 31 4.8 3.1 setosa
## 32 5.4 3.4 setosa
## 33 5.2 4.1 setosa
## 34 5.5 4.2 setosa
## 35 4.9 3.1 setosa
## 36 5.0 3.2 setosa
## 37 5.5 3.5 setosa
## 38 4.9 3.6 setosa
## 39 4.4 3.0 setosa
## 40 5.1 3.4 setosa
## 41 5.0 3.5 setosa
## 42 4.5 2.3 setosa
## 43 4.4 3.2 setosa
## 44 5.0 3.5 setosa
## 45 5.1 3.8 setosa
## 46 4.8 3.0 setosa
## 47 5.1 3.8 setosa
## 48 4.6 3.2 setosa
## 49 5.3 3.7 setosa
## 50 5.0 3.3 setosa
## 51 7.0 3.2 versicolor
## 52 6.4 3.2 versicolor
## 53 6.9 3.1 versicolor
## 54 5.5 2.3 versicolor
## 55 6.5 2.8 versicolor
## 56 5.7 2.8 versicolor
## 57 6.3 3.3 versicolor
## 58 4.9 2.4 versicolor
## 59 6.6 2.9 versicolor
## 60 5.2 2.7 versicolor
## 61 5.0 2.0 versicolor
## 62 5.9 3.0 versicolor
## 63 6.0 2.2 versicolor
## 64 6.1 2.9 versicolor
## 65 5.6 2.9 versicolor
## 66 6.7 3.1 versicolor
## 67 5.6 3.0 versicolor
## 68 5.8 2.7 versicolor
## 69 6.2 2.2 versicolor
## 70 5.6 2.5 versicolor
## 71 5.9 3.2 versicolor
## 72 6.1 2.8 versicolor
## 73 6.3 2.5 versicolor
## 74 6.1 2.8 versicolor
## 75 6.4 2.9 versicolor
## 76 6.6 3.0 versicolor
## 77 6.8 2.8 versicolor
## 78 6.7 3.0 versicolor
## 79 6.0 2.9 versicolor
## 80 5.7 2.6 versicolor
## 81 5.5 2.4 versicolor
## 82 5.5 2.4 versicolor
## 83 5.8 2.7 versicolor
## 84 6.0 2.7 versicolor
## 85 5.4 3.0 versicolor
## 86 6.0 3.4 versicolor
## 87 6.7 3.1 versicolor
## 88 6.3 2.3 versicolor
## 89 5.6 3.0 versicolor
## 90 5.5 2.5 versicolor
## 91 5.5 2.6 versicolor
## 92 6.1 3.0 versicolor
## 93 5.8 2.6 versicolor
## 94 5.0 2.3 versicolor
## 95 5.6 2.7 versicolor
## 96 5.7 3.0 versicolor
## 97 5.7 2.9 versicolor
## 98 6.2 2.9 versicolor
## 99 5.1 2.5 versicolor
## 100 5.7 2.8 versicolor
## 101 6.3 3.3 virginica
## 102 5.8 2.7 virginica
## 103 7.1 3.0 virginica
## 104 6.3 2.9 virginica
## 105 6.5 3.0 virginica
## 106 7.6 3.0 virginica
## 107 4.9 2.5 virginica
## 108 7.3 2.9 virginica
## 109 6.7 2.5 virginica
## 110 7.2 3.6 virginica
## 111 6.5 3.2 virginica
## 112 6.4 2.7 virginica
## 113 6.8 3.0 virginica
## 114 5.7 2.5 virginica
## 115 5.8 2.8 virginica
## 116 6.4 3.2 virginica
## 117 6.5 3.0 virginica
## 118 7.7 3.8 virginica
## 119 7.7 2.6 virginica
## 120 6.0 2.2 virginica
## 121 6.9 3.2 virginica
## 122 5.6 2.8 virginica
## 123 7.7 2.8 virginica
## 124 6.3 2.7 virginica
## 125 6.7 3.3 virginica
## 126 7.2 3.2 virginica
## 127 6.2 2.8 virginica
## 128 6.1 3.0 virginica
## 129 6.4 2.8 virginica
## 130 7.2 3.0 virginica
## 131 7.4 2.8 virginica
## 132 7.9 3.8 virginica
## 133 6.4 2.8 virginica
## 134 6.3 2.8 virginica
## 135 6.1 2.6 virginica
## 136 7.7 3.0 virginica
## 137 6.3 3.4 virginica
## 138 6.4 3.1 virginica
## 139 6.0 3.0 virginica
## 140 6.9 3.1 virginica
## 141 6.7 3.1 virginica
## 142 6.9 3.1 virginica
## 143 5.8 2.7 virginica
## 144 6.8 3.2 virginica
## 145 6.7 3.3 virginica
## 146 6.7 3.0 virginica
## 147 6.3 2.5 virginica
## 148 6.5 3.0 virginica
## 149 6.2 3.4 virginica
## 150 5.9 3.0 virginica
head(iris,5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species datos
## 1 5.1 3.5 1.4 0.2 setosa 1
## 2 4.9 3.0 1.4 0.2 setosa 2
## 3 4.7 3.2 1.3 0.2 setosa 3
## 4 4.6 3.1 1.5 0.2 setosa 4
## 5 5.0 3.6 1.4 0.2 setosa 5
Tarea 1.1.4
Selecciona las filas 1:4 y 100:104 de iris.
rm(iris)
c(1:4,100:104),] iris[
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 100 5.7 2.8 4.1 1.3 versicolor
## 101 6.3 3.3 6.0 2.5 virginica
## 102 5.8 2.7 5.1 1.9 virginica
## 103 7.1 3.0 5.9 2.1 virginica
## 104 6.3 2.9 5.6 1.8 virginica
head(iris,5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
Tarea 1.1.5
Usa un vector de texto para seleccionar las columnas Wind y Temp de airquality.
airquality
## 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
## 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
## 93 39 83 6.9 81 8 1
## 94 9 24 13.8 81 8 2
## 95 16 77 7.4 82 8 3
## 96 78 NA 6.9 86 8 4
## 97 35 NA 7.4 85 8 5
## 98 66 NA 4.6 87 8 6
## 99 122 255 4.0 89 8 7
## 100 89 229 10.3 90 8 8
## 101 110 207 8.0 90 8 9
## 102 NA 222 8.6 92 8 10
## 103 NA 137 11.5 86 8 11
## 104 44 192 11.5 86 8 12
## 105 28 273 11.5 82 8 13
## 106 65 157 9.7 80 8 14
## 107 NA 64 11.5 79 8 15
## 108 22 71 10.3 77 8 16
## 109 59 51 6.3 79 8 17
## 110 23 115 7.4 76 8 18
## 111 31 244 10.9 78 8 19
## 112 44 190 10.3 78 8 20
## 113 21 259 15.5 77 8 21
## 114 9 36 14.3 72 8 22
## 115 NA 255 12.6 75 8 23
## 116 45 212 9.7 79 8 24
## 117 168 238 3.4 81 8 25
## 118 73 215 8.0 86 8 26
## 119 NA 153 5.7 88 8 27
## 120 76 203 9.7 97 8 28
## 121 118 225 2.3 94 8 29
## 122 84 237 6.3 96 8 30
## 123 85 188 6.3 94 8 31
## 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
<-airquality %>% dplyr::select(3,4)
fff<- sapply(fff, as.character)
tmp head(tmp,5)
## Wind Temp
## [1,] "7.4" "67"
## [2,] "8" "72"
## [3,] "12.6" "74"
## [4,] "11.5" "62"
## [5,] "14.3" "56"
Tarea 1.1.6
Crea una tabla que sea la primera fila de iris repetida 100 veces.
Respuesta a la pregunta numero 1.1.6
** iris %>% slice(rep(1, each =18)) **
rm(iris)
## Warning in rm(iris): objeto 'iris' no encontrado
library(dplyr)
%>% slice(rep(1, each =18)) iris
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 5.1 3.5 1.4 0.2 setosa
## 3 5.1 3.5 1.4 0.2 setosa
## 4 5.1 3.5 1.4 0.2 setosa
## 5 5.1 3.5 1.4 0.2 setosa
## 6 5.1 3.5 1.4 0.2 setosa
## 7 5.1 3.5 1.4 0.2 setosa
## 8 5.1 3.5 1.4 0.2 setosa
## 9 5.1 3.5 1.4 0.2 setosa
## 10 5.1 3.5 1.4 0.2 setosa
## 11 5.1 3.5 1.4 0.2 setosa
## 12 5.1 3.5 1.4 0.2 setosa
## 13 5.1 3.5 1.4 0.2 setosa
## 14 5.1 3.5 1.4 0.2 setosa
## 15 5.1 3.5 1.4 0.2 setosa
## 16 5.1 3.5 1.4 0.2 setosa
## 17 5.1 3.5 1.4 0.2 setosa
## 18 5.1 3.5 1.4 0.2 setosa
head(iris,5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
Tarea 1.1.7
En CO2, cuenta cuántas filas corresponden a cada tipo de planta.
head(CO2)
## Grouped Data: uptake ~ conc | Plant
## Plant Type Treatment conc uptake
## 1 Qn1 Quebec nonchilled 95 16.0
## 2 Qn1 Quebec nonchilled 175 30.4
## 3 Qn1 Quebec nonchilled 250 34.8
## 4 Qn1 Quebec nonchilled 350 37.2
## 5 Qn1 Quebec nonchilled 500 35.3
## 6 Qn1 Quebec nonchilled 675 39.2
Respuesta a la pregunta numero 1.1.7 CO2 %>% count(Plant,sort = TRUE)
%>% dplyr::count(Plant,sort = T) CO2
## Grouped Data: uptake ~ conc | Plant
## Plant n
## 1 Qn1 7
## 2 Qn2 7
## 3 Qn3 7
## 4 Qc1 7
## 5 Qc3 7
## 6 Qc2 7
## 7 Mn3 7
## 8 Mn2 7
## 9 Mn1 7
## 10 Mc2 7
## 11 Mc3 7
## 12 Mc1 7
CO2
## Grouped Data: uptake ~ conc | Plant
## Plant Type Treatment conc uptake
## 1 Qn1 Quebec nonchilled 95 16.0
## 2 Qn1 Quebec nonchilled 175 30.4
## 3 Qn1 Quebec nonchilled 250 34.8
## 4 Qn1 Quebec nonchilled 350 37.2
## 5 Qn1 Quebec nonchilled 500 35.3
## 6 Qn1 Quebec nonchilled 675 39.2
## 7 Qn1 Quebec nonchilled 1000 39.7
## 8 Qn2 Quebec nonchilled 95 13.6
## 9 Qn2 Quebec nonchilled 175 27.3
## 10 Qn2 Quebec nonchilled 250 37.1
## 11 Qn2 Quebec nonchilled 350 41.8
## 12 Qn2 Quebec nonchilled 500 40.6
## 13 Qn2 Quebec nonchilled 675 41.4
## 14 Qn2 Quebec nonchilled 1000 44.3
## 15 Qn3 Quebec nonchilled 95 16.2
## 16 Qn3 Quebec nonchilled 175 32.4
## 17 Qn3 Quebec nonchilled 250 40.3
## 18 Qn3 Quebec nonchilled 350 42.1
## 19 Qn3 Quebec nonchilled 500 42.9
## 20 Qn3 Quebec nonchilled 675 43.9
## 21 Qn3 Quebec nonchilled 1000 45.5
## 22 Qc1 Quebec chilled 95 14.2
## 23 Qc1 Quebec chilled 175 24.1
## 24 Qc1 Quebec chilled 250 30.3
## 25 Qc1 Quebec chilled 350 34.6
## 26 Qc1 Quebec chilled 500 32.5
## 27 Qc1 Quebec chilled 675 35.4
## 28 Qc1 Quebec chilled 1000 38.7
## 29 Qc2 Quebec chilled 95 9.3
## 30 Qc2 Quebec chilled 175 27.3
## 31 Qc2 Quebec chilled 250 35.0
## 32 Qc2 Quebec chilled 350 38.8
## 33 Qc2 Quebec chilled 500 38.6
## 34 Qc2 Quebec chilled 675 37.5
## 35 Qc2 Quebec chilled 1000 42.4
## 36 Qc3 Quebec chilled 95 15.1
## 37 Qc3 Quebec chilled 175 21.0
## 38 Qc3 Quebec chilled 250 38.1
## 39 Qc3 Quebec chilled 350 34.0
## 40 Qc3 Quebec chilled 500 38.9
## 41 Qc3 Quebec chilled 675 39.6
## 42 Qc3 Quebec chilled 1000 41.4
## 43 Mn1 Mississippi nonchilled 95 10.6
## 44 Mn1 Mississippi nonchilled 175 19.2
## 45 Mn1 Mississippi nonchilled 250 26.2
## 46 Mn1 Mississippi nonchilled 350 30.0
## 47 Mn1 Mississippi nonchilled 500 30.9
## 48 Mn1 Mississippi nonchilled 675 32.4
## 49 Mn1 Mississippi nonchilled 1000 35.5
## 50 Mn2 Mississippi nonchilled 95 12.0
## 51 Mn2 Mississippi nonchilled 175 22.0
## 52 Mn2 Mississippi nonchilled 250 30.6
## 53 Mn2 Mississippi nonchilled 350 31.8
## 54 Mn2 Mississippi nonchilled 500 32.4
## 55 Mn2 Mississippi nonchilled 675 31.1
## 56 Mn2 Mississippi nonchilled 1000 31.5
## 57 Mn3 Mississippi nonchilled 95 11.3
## 58 Mn3 Mississippi nonchilled 175 19.4
## 59 Mn3 Mississippi nonchilled 250 25.8
## 60 Mn3 Mississippi nonchilled 350 27.9
## 61 Mn3 Mississippi nonchilled 500 28.5
## 62 Mn3 Mississippi nonchilled 675 28.1
## 63 Mn3 Mississippi nonchilled 1000 27.8
## 64 Mc1 Mississippi chilled 95 10.5
## 65 Mc1 Mississippi chilled 175 14.9
## 66 Mc1 Mississippi chilled 250 18.1
## 67 Mc1 Mississippi chilled 350 18.9
## 68 Mc1 Mississippi chilled 500 19.5
## 69 Mc1 Mississippi chilled 675 22.2
## 70 Mc1 Mississippi chilled 1000 21.9
## 71 Mc2 Mississippi chilled 95 7.7
## 72 Mc2 Mississippi chilled 175 11.4
## 73 Mc2 Mississippi chilled 250 12.3
## 74 Mc2 Mississippi chilled 350 13.0
## 75 Mc2 Mississippi chilled 500 12.5
## 76 Mc2 Mississippi chilled 675 13.7
## 77 Mc2 Mississippi chilled 1000 14.4
## 78 Mc3 Mississippi chilled 95 10.6
## 79 Mc3 Mississippi chilled 175 18.0
## 80 Mc3 Mississippi chilled 250 17.9
## 81 Mc3 Mississippi chilled 350 17.9
## 82 Mc3 Mississippi chilled 500 17.9
## 83 Mc3 Mississippi chilled 675 18.9
## 84 Mc3 Mississippi chilled 1000 19.9
Tarea 1.1.8
Ejecuta e interpreta table(CO2$conc).
table(CO2$conc)
##
## 95 175 250 350 500 675 1000
## 12 12 12 12 12 12 12
table suele ser esencial para organizar y resumir los datos, especialmente cuando se trabaja con variables categóricas. Al crear un elemento con table en R, se crea un tipo específico de objeto llamado table, que es muy similar a un DataFrame.
La funcion table cuenta la cantidad de veces que aparece una categoría de respuesta en una columna de un dataFrame
3.1 Ahora realizaremos el mismo para otro dataFrame
Descripción
Se realizó un experimento para medir y comparar la efectividad de varios suplementos alimenticios en la tasa de crecimiento de los pollos.
Argumentos Formato
Un marco de datos con 71 observaciones sobre las siguientes 2 variables.
peso:
una variable numérica que da el peso del pollito.
alimentación:
un factor que da el tipo de alimento.
Detalles
Los pollitos recién nacidos se asignaron al azar en seis grupos, y cada grupo recibió un suplemento alimenticio diferente. Sus pesos en gramos después de seis semanas se dan junto con los tipos de alimento.
chickwts
## weight feed
## 1 179 horsebean
## 2 160 horsebean
## 3 136 horsebean
## 4 227 horsebean
## 5 217 horsebean
## 6 168 horsebean
## 7 108 horsebean
## 8 124 horsebean
## 9 143 horsebean
## 10 140 horsebean
## 11 309 linseed
## 12 229 linseed
## 13 181 linseed
## 14 141 linseed
## 15 260 linseed
## 16 203 linseed
## 17 148 linseed
## 18 169 linseed
## 19 213 linseed
## 20 257 linseed
## 21 244 linseed
## 22 271 linseed
## 23 243 soybean
## 24 230 soybean
## 25 248 soybean
## 26 327 soybean
## 27 329 soybean
## 28 250 soybean
## 29 193 soybean
## 30 271 soybean
## 31 316 soybean
## 32 267 soybean
## 33 199 soybean
## 34 171 soybean
## 35 158 soybean
## 36 248 soybean
## 37 423 sunflower
## 38 340 sunflower
## 39 392 sunflower
## 40 339 sunflower
## 41 341 sunflower
## 42 226 sunflower
## 43 320 sunflower
## 44 295 sunflower
## 45 334 sunflower
## 46 322 sunflower
## 47 297 sunflower
## 48 318 sunflower
## 49 325 meatmeal
## 50 257 meatmeal
## 51 303 meatmeal
## 52 315 meatmeal
## 53 380 meatmeal
## 54 153 meatmeal
## 55 263 meatmeal
## 56 242 meatmeal
## 57 206 meatmeal
## 58 344 meatmeal
## 59 258 meatmeal
## 60 368 casein
## 61 390 casein
## 62 379 casein
## 63 260 casein
## 64 404 casein
## 65 318 casein
## 66 352 casein
## 67 359 casein
## 68 216 casein
## 69 222 casein
## 70 283 casein
## 71 332 casein
Tarea 1.1.9
Ejecuta e interpreta table(table(CO2$conc)).
Tarea 1.1.10
Ejecuta e interpreta table(table(CO2$conc)).
table(table(CO2$conc))
##
## 12
## 7
Tarea 1.1.9
Selecciona todos los elementos de un vector menos menos los dos últimos.
Tarea 1.1.10
Implementa la función diff (las diferencias entre cada valor de un vector y el que lo precede) a mano. Nota: la función diff existe en R; pruébala en caso de duda.
Tarea 1.1.11
Cambia (en una sola expresión) los nombres de las dos primeras columnas de mi.iris por su traducción al español.
Tarea 1.1.12
Muestrea iris, es decir, extrae (p.e., 30) filas al azar de dicha tabla. Pista: recuerda que ordenar era seleccionar ordenadamente; de igual manera, en una tabla, muestrear será…
Tarea 1.1.13
Parte iris en dos partes iguales (75 observaciones cada uno) con las filas elegidas al azar (¡y complementarias!).
Tarea 1.1.14
Si x contuviese el número de puntos obtenidos en la liga de fútbol por los distintos equipos, ¿cómo usarías rank para determinar cuál es el campeón?
Tarea 1.1.15
¿Qué otros tipos de ties existen? ¿Qué hacen?
Tarea 1.1.16
Comprueba que rank(x, ties = ‘first’) es equivalente a order(order(x)).
Tarea 1.1.17
Comprueba que order(order(order(x))) es equivalente a order(x).
Tarea 1.1.18
Ejecuta e interpreta tail(sort(table(CO2$uptake))). ¿Qué utilidad le ves a la expresión anterior?
Tarea 1.1.19
Comprueba que log es una función vectorizada aplicándosela a x.
Tarea 1.1.20
Calcula el valor medio de la longitud de los pétalos de iris usando mean.
Tarea 1.1.21
Repite el ejercicio anterior usando sum y length.
Si x <- 1:10 e y <- 1:2, ¿cuánto vale x * y? ¿Qué pasa si y <- 1:3?