?table
Hay varias funciones de distintos paquetes que se llaman table.
?base::table
Los “::” indican que buscamos la función table que pertenece a la librería base.
Si conocemos la función y queremos ver argumentos lo hacemos así:
?round
Para ver la relación que tiene con otras funciones:
apropos("table")
Para saber en qué paquete está un comando y qué relaciones tiene con otras funciones podemos usar help.search:
help.search("trunc")
Se tipea una operación: Operadores aritméticos: “+”, “-”, “*“,”/“,”^”
2 + 3
## [1] 5
5 - 6
## [1] -1
2 * 3
## [1] 6
3/7
## [1] 0.4285714
2^3
## [1] 8
2^-3
## [1] 0.125
Un objeto es creado con el operador de asignación “<-”. (Alt + -)
a <- 5
b <- "mi objeto"
El contenido de un objeto es desplegado cuando escribimos su nombre.
a
## [1] 5
b
## [1] "mi objeto"
Los objetos son sensibles a su nombre distinguiendo entre mayúsculas y minúsculas.
Los objetos pueden tener una longitud arbitraria en sus nombres.
quelindodiahizohoy <-10
quelindodiahizohoy
## [1] 10
x <- 2
x + 5
## [1] 7
x
## [1] 2
El objeto x no se vio modificado por la suma.
k <- x + 5
k
## [1] 7
En el objeto k ahora sí vemos el efecto de sumar 5 a x, porque utilizamos el operador de asignación “<-”.
y <- 9
x + y
## [1] 11
El valor de un objeto se puede modificar directamente.
a
## [1] 5
El objeto a tenía asignado el valor 5.
a <- 7
a
## [1] 7
Ahora tiene asignado el valor 7.
a/2
## [1] 3.5
También podemos usar operadores lógicos.
A <- 8
a==A
## [1] FALSE
b
## [1] "mi objeto"
aqui <- "flacso"
aqui
## [1] "flacso"
Para borrar un objeto que ya no queremos usar:
rm(A)
rm(a,b,k)
rm(aqui,quelindodiahizohoy)
Con rm() (corchete vacío) se borran todos los objetos creados.
Los vectores son objetos que contienen varios valores.
altura <- c(167, 192, 173, 174, 172, 167, 171, 185, 163, 170)
altura
## [1] 167 192 173 174 172 167 171 185 163 170
Los corchetes es la manera de entrar a los valores del objeto. Usamos corchetes cuando queremos recodificar valores de una variable o seleccionar algunos casos o variables de una base.
altura[2]
## [1] 192
Arroja el valor que está en la posición 2 del vector.
altura[-2]
## [1] 167 173 174 172 167 171 185 163 170
Arroja todos los elementos del vector menor la posición 2.
altura[1:3]
## [1] 167 192 173
Arroja los elementos del vector entre la posición 1 y la posición 3. El operador : sirve para generar una secuencia de valores. 1:3 equivale a c(1,2,3).
altura[c(1,3,5)]
## [1] 167 173 172
Arroja los elementos en las posiciones 1, 3 y 5.
Para cambiar un valor del vector, lo seleccionamos con su posición y le asignamos el nuevo valor.
altura[5] <- 168
altura
## [1] 167 192 173 174 168 167 171 185 163 170
Podemos usar también expresiones lógicas al entrar a los valores del vector.
altura[altura >= 170]
## [1] 192 173 174 171 185 170
Nos muestra sólo aquellos valores del vector que cumplen la condición indicada.
Le podemos pedir las posiciones en las que están los valores que cumplen la condición con la función which().
which(altura >= 170)
## [1] 2 3 4 7 8 10
which(altura == 168)
## [1] 5
Función sort: ordena la serie de datos de menor a mayor.
sort(altura)
## [1] 163 167 167 168 170 171 173 174 185 192
sort sólo lo muestra ordenado, pero no modifica el objeto.
altura
## [1] 167 192 173 174 168 167 171 185 163 170
Sigue en el orden original.
altura_ord <- sort(altura)
altura_ord
## [1] 163 167 167 168 170 171 173 174 185 192
El objeto altura_ord guarda los valores ordenados de menor a mayor.
Podemos operar sobre el vector, alterando cada observación.
altura + 20
## [1] 187 212 193 194 188 187 191 205 183 190
Pero no modifica el vector.
altura
## [1] 167 192 173 174 168 167 171 185 163 170
Si queremos un vector que contenga los “+ 20” debemos asignarlo a un objeto con “<-”.
altura20 <- altura + 20
altura20
## [1] 187 212 193 194 188 187 191 205 183 190
En este ejemplo, dividimos cada observación del vector por cien (para pasar de cm a m)
altura/100
## [1] 1.67 1.92 1.73 1.74 1.68 1.67 1.71 1.85 1.63 1.70
altura_m <- altura/100
altura_m
## [1] 1.67 1.92 1.73 1.74 1.68 1.67 1.71 1.85 1.63 1.70
Exponenciamos cada observación por 2 (pasar de m a m2)
altura_m^2
## [1] 2.7889 3.6864 2.9929 3.0276 2.8224 2.7889 2.9241 3.4225 2.6569 2.8900
altura_m2 <- altura_m^2
altura_m2
## [1] 2.7889 3.6864 2.9929 3.0276 2.8224 2.7889 2.9241 3.4225 2.6569 2.8900
Se pueden combinar objetos. Ejemplo: índice de masa corporal (IMC).
Creamos otro objeto con el peso de los individuos.
peso <- c(86, 74, 83, 50, 78, 66, 66, 51, 50, 55)
peso
## [1] 86 74 83 50 78 66 66 51 50 55
Ahora creamos el objeto IMC con valores de peso/altura_m2)
IMC <- peso/altura_m2
IMC
## [1] 30.83653 20.07378 27.73230 16.51473 27.63605 23.66524 22.57105 14.90139
## [9] 18.81892 19.03114
Redondeamos valores con la función round()
round(IMC, 2)
## [1] 30.84 20.07 27.73 16.51 27.64 23.67 22.57 14.90 18.82 19.03
IMC <- round(IMC, 2)
IMC
## [1] 30.84 20.07 27.73 16.51 27.64 23.67 22.57 14.90 18.82 19.03
Así sí modifico el objeto IMC (lo sobreescribo), porque la función se asigna a ese objeto
educacion <- c("primaria", "secundaria", "preparatoria", "universidad")
educacion
## [1] "primaria" "secundaria" "preparatoria" "universidad"
Con vectores de caracteres también podemos usar los comandos para seleccionar valores.
educacion[3]
## [1] "preparatoria"
which(educacion == "primaria")
## [1] 1
Uso de los argumentos de una función. Para ver cuáles son sus argumentos, podemos recurrir a la ayuda. Ejemplo 1: función seq - crea una secuencia ordenada de valores.
?seq
Los nombres de los argumentos pueden omitirse, pero es necesario saber el orden.
seq(from=1, to=10, by=2)
## [1] 1 3 5 7 9
seq(1,10,2)
## [1] 1 3 5 7 9
Si nombramos los argumentos podemos usarlos en distinto orden.
seq(by=2, to=10, from=1)
## [1] 1 3 5 7 9
seq(2,10,1)
## [1] 2 3 4 5 6 7 8 9 10
Ejemplo 2: función rep - crea una secuencia de n valores repetidos.
?rep
rep(3,5)
## [1] 3 3 3 3 3
Usualmente aplicamos una función a objetos de R.
Función length(): da el número de elementos de un objeto.
length(altura)
## [1] 10
Función sum(): suma todos los valores de un objeto.
sum(altura)
## [1] 1730
Función mean(): da el promedio de los valores de un objeto.
mean(altura)
## [1] 173
Función var(): da la varianza de los valores de un objeto
var(altura)
## [1] 79.55556
Atención: para usar algunas funciones el objeto no puede tener valores faltantes (missing). Ejemplo: imaginemos que el segundo individuo no indica altura.
altura[2] <- NA
altura
## [1] 167 NA 173 174 168 167 171 185 163 170
Comprobación de la existencia de valores faltantes con la función is.na().
is.na(altura)
## [1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Nos muestra para cada observación un valor lógico (TRUE o FALSE). El segundo valor es TRUE, lo que significa que ése es un valor faltante. También podemos decirle que nos sume cuántos valores faltantes tenemos en un vector.
sum(is.na(altura))
## [1] 1
sum(is.na(peso))
## [1] 0
Hay un valor faltante en el vector altura y ningún valor faltante en el vector peso. Si ahora intentamos calcular el promedio de los valores del vector altura.
mean(altura)
## [1] NA
No es posible calcular la altura del objeto porque tiene missing. Veamos qué indica la ayuda de la función.
?mean
Necesitamos usar el argumento rm.na=TRUE (“remover missing values”).
mean(altura, na.rm=TRUE)
## [1] 170.8889
Ahora calcula el valor promedio sin considerar el NA.
Resumen de funciones:
c(3,4,5,6)
## [1] 3 4 5 6
3:6
## [1] 3 4 5 6
Otras funciones útiles (hay muchas más):
Las matrices son objetos de dos dimension que contienen valores numéricos o caracteres.
Para crear una matriz debemos indicar los datos, el número de filas y el número de columnas. Lo hacemos con la función matrix.
?matrix
m1 <- matrix(1:16, 4, 4)
m1
## [,1] [,2] [,3] [,4]
## [1,] 1 5 9 13
## [2,] 2 6 10 14
## [3,] 3 7 11 15
## [4,] 4 8 12 16
Por defecto llena la matriz de columna en columna
Con el comando dim() vemos cuántas filas y cuántas columnas tiene la matriz.
dim(m1)
## [1] 4 4
Para seleccionar un elemento específico de la matriz, hay que indicar su posición mediante fila y columna. Por ejemplo, si queremos seleccionar el elemento en la segunda fila y la cuarta columna:
m1[2, 4]
## [1] 14
También podemos seleccionar toda una fila, dejando vacío el valor de la columna:
m1[2, ]
## [1] 2 6 10 14
v1 <- m1[2, ]
v1
## [1] 2 6 10 14
Al asignárselo al objeto v1, ahora tenemos un vector con los valores de la segunda fila de la matriz m1.
O también podemos seleccionar toda la columna, dejando vacío el valor de la fila:
m1[ ,4]
## [1] 13 14 15 16
v2 <- m1[ ,4]
v2
## [1] 13 14 15 16
Ahora el vector v2 queda asignado con los valores de la cuarta columna de la matriz m1.
120 134 256
N | Tamaño | Mujer | Hombre |
---|---|---|---|
1 | 4 | 1200 | 1450 |
2 | 2 | 1180 | 1870 |
3 | 3 | 1750 | 1690 |
4 | 2 | 2100 | 0 |
Calcula el ingreso total de cada hogar.
calcula el ingreso per cápita de cada hogar.
Redondea para que quede únicamente un decimal.
Calcula el ingreso mínimo y máximo de las mujeres.
Crea un vector “mujer.na” con los datos de ingresos de las mujeres, pero sustituyendo la última observación por NA.
Calcula el ingreso per cápita con esos datos (“varon”, “mujer.na” y “tam”). El último valor no lo debe calcular, lo debe dejar como NA.
¡Cuidado! A veces los datos faltantes están codificados como 99, 00 ó 999. Es necesario declarar ese número como NA o lo computará como un valor normal.
Crea un vector “mujer.mis” con los datos de ingresos de las mujeres, pero sustituyendo la última observación por 99. Calcula después el ingreso per cápita con esos datos (“varon”, “mujer.mis” y “tam”). Verás que arroja un valor para todos los casos, incluido el último. Ese valor no es correcto, ya que toma “99” como valor de ingreso, en vez de como valor faltante.
Comprueba si los vectores “mujer”, “mujer.na” y “mujer.mis” tienen datos faltantes (declarados como missing). Usa para ello la función is.na().
Podemos comprobar la diferencia entre mujer.na y mujer.mis con la función table().
table(mujer.na, mujer.mis)
## mujer.mis
## mujer.na 99 1180 1200 1750
## 1180 0 1 0 0
## 1200 0 0 1 0
## 1750 0 0 0 1
Si no indicamos ningún argumento adicional, el valor faltante de mujer.na no aparece. En mujer.mis sí, porque no está declarado como faltante.
Para que muestre los valores faltantes, usamos el argumento “useNA”.
table(mujer.na, mujer.mis, useNA = "always")
## mujer.mis
## mujer.na 99 1180 1200 1750 <NA>
## 1180 0 1 0 0 0
## 1200 0 0 1 0 0
## 1750 0 0 0 1 0
## <NA> 1 0 0 0 0
table(mujer.na, mujer.mis, useNA = "ifany")
## mujer.mis
## mujer.na 99 1180 1200 1750
## 1180 0 1 0 0
## 1200 0 0 1 0
## 1750 0 0 0 1
## <NA> 1 0 0 0
Si indicamos “always”, aparecerá la opción NA aunque no exista ningún valor faltante. Si indicamos “ifany” aparecerá la opción NA sólo cuando exista algún valor faltante.
Inciso: si tuviéramos varios valores 99 y quisiéramos sustituirlos todos por NA al mismo tiempo, lo haríamos de otra manera. Ejemplo: creamos un valor con varios valores 99 y los sustituimos todos.
mujer.namis <- c(99,1180,1750,99)
mujer.namis
## [1] 99 1180 1750 99
mujer.namis[mujer.namis == 99] <- NA
mujer.namis
## [1] NA 1180 1750 NA
Vuelve a calcular el ingreso per cápita con los datos del vector modificado: “varon”, “mujer.mis” y “tam”. Ahora ya no debe hacer el cálculo para el hogar con la observación faltante y debe arrojar NA.
Calcula el ingreso mínimo y máximo del vector mujer.na, sin indicar ningún argumento adicional. Verás que da NA, por el missing.
Hazo ahora usando el argumento apropiado en las funciones. Ya no debe dar NA y lo calculará sin tener en cuenta el valor faltante.