Matrices

Generación

  • Se pueden generar con la función matrix()
  • Tienen filas y columnas
  • Los subconjuntos se obtienen con los corchetes [], con la salvedad de que existen dos dimensiones (filas y columnas), por tal motivo los subconjuntos tendrán la siguiente apariencia: [ , ]
# Matriz en R
matrix(data = c(1, 20, 40, 50))
##      [,1]
## [1,]    1
## [2,]   20
## [3,]   40
## [4,]   50
# Matriz con número de columnas
matrix(data = c(1, 10, 20, 30), ncol = 2)
##      [,1] [,2]
## [1,]    1   20
## [2,]   10   30
# Matriz con número de columnas por fila
matrix(data = c(1, 10, 20, 30), ncol = 2, byrow = TRUE)
##      [,1] [,2]
## [1,]    1   10
## [2,]   20   30
# Asignando una matriz
mi_matriz <- matrix(data =  seq(from = 1, to = 2000, by = 40), ncol = 5)
mi_matriz
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]    1  401  801 1201 1601
##  [2,]   41  441  841 1241 1641
##  [3,]   81  481  881 1281 1681
##  [4,]  121  521  921 1321 1721
##  [5,]  161  561  961 1361 1761
##  [6,]  201  601 1001 1401 1801
##  [7,]  241  641 1041 1441 1841
##  [8,]  281  681 1081 1481 1881
##  [9,]  321  721 1121 1521 1921
## [10,]  361  761 1161 1561 1961
names(mi_matriz)
## NULL
# Crear una matriz asignando nombre
mi_matriz2 <- matrix(data = c(1, 3, 5, 6), ncol = 2,
                     dimnames = list(c("F1", "F2"), c("C1", "C2")))
mi_matriz2
##    C1 C2
## F1  1  5
## F2  3  6
dimnames(mi_matriz2)
## [[1]]
## [1] "F1" "F2"
## 
## [[2]]
## [1] "C1" "C2"
# Cambiando los nombres de la matriz
dimnames(mi_matriz2) <- list(c("N1", "N2"), c("M1", "M2"))
mi_matriz2
##    M1 M2
## N1  1  5
## N2  3  6
# Número de filas, columnas, promedio de filas, columnas
rownames(mi_matriz2)
## [1] "N1" "N2"
colnames(mi_matriz2)
## [1] "M1" "M2"
nrow(mi_matriz)
## [1] 10
ncol(mi_matriz)
## [1] 5
dim(mi_matriz)
## [1] 10  5
rowMeans(mi_matriz)
##  [1]  801  841  881  921  961 1001 1041 1081 1121 1161
colMeans(mi_matriz)
## [1]  181  581  981 1381 1781
rowSums(mi_matriz)
##  [1] 4005 4205 4405 4605 4805 5005 5205 5405 5605 5805
colSums(mi_matriz)
## [1]  1810  5810  9810 13810 17810

Subconjuntos

mi_matriz2
##    M1 M2
## N1  1  5
## N2  3  6
mi_matriz2[1, 2]
## [1] 5
mi_matriz2[1, ] # la fila 1 con todas las columnas
## M1 M2 
##  1  5
mi_matriz2[, 1] # la columna 1 con todas las filas
## N1 N2 
##  1  3
mi_matriz2["N1", "M2"]
## [1] 5
#
mi_matriz
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]    1  401  801 1201 1601
##  [2,]   41  441  841 1241 1641
##  [3,]   81  481  881 1281 1681
##  [4,]  121  521  921 1321 1721
##  [5,]  161  561  961 1361 1761
##  [6,]  201  601 1001 1401 1801
##  [7,]  241  641 1041 1441 1841
##  [8,]  281  681 1081 1481 1881
##  [9,]  321  721 1121 1521 1921
## [10,]  361  761 1161 1561 1961
mi_matriz[3, c(3, 4)] # fila 3 y columnas 3 y 4
## [1]  881 1281
mi_matriz[c(4, 5), 1] # filas 4 y 5 y columna 1
## [1] 121 161

Listas

Generación

mi_lista <- list(a = c("a", "b", "c"), b = mi_matriz, bd = iris)
mi_lista
## $a
## [1] "a" "b" "c"
## 
## $b
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]    1  401  801 1201 1601
##  [2,]   41  441  841 1241 1641
##  [3,]   81  481  881 1281 1681
##  [4,]  121  521  921 1321 1721
##  [5,]  161  561  961 1361 1761
##  [6,]  201  601 1001 1401 1801
##  [7,]  241  641 1041 1441 1841
##  [8,]  281  681 1081 1481 1881
##  [9,]  321  721 1121 1521 1921
## [10,]  361  761 1161 1561 1961
## 
## $bd
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 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
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
class(mi_lista)
## [1] "list"

Subconjuntos (elementos)

  • []
  • [[]]
  • $
names(mi_lista)
## [1] "a"  "b"  "bd"
mi_lista$b # por nombre
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]    1  401  801 1201 1601
##  [2,]   41  441  841 1241 1641
##  [3,]   81  481  881 1281 1681
##  [4,]  121  521  921 1321 1721
##  [5,]  161  561  961 1361 1761
##  [6,]  201  601 1001 1401 1801
##  [7,]  241  641 1041 1441 1841
##  [8,]  281  681 1081 1481 1881
##  [9,]  321  721 1121 1521 1921
## [10,]  361  761 1161 1561 1961
mi_lista[2] # por posición (con atributos)
## $b
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]    1  401  801 1201 1601
##  [2,]   41  441  841 1241 1641
##  [3,]   81  481  881 1281 1681
##  [4,]  121  521  921 1321 1721
##  [5,]  161  561  961 1361 1761
##  [6,]  201  601 1001 1401 1801
##  [7,]  241  641 1041 1441 1841
##  [8,]  281  681 1081 1481 1881
##  [9,]  321  721 1121 1521 1921
## [10,]  361  761 1161 1561 1961
mi_lista[[2]] # por posición (sin atributos)
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]    1  401  801 1201 1601
##  [2,]   41  441  841 1241 1641
##  [3,]   81  481  881 1281 1681
##  [4,]  121  521  921 1321 1721
##  [5,]  161  561  961 1361 1761
##  [6,]  201  601 1001 1401 1801
##  [7,]  241  641 1041 1441 1841
##  [8,]  281  681 1081 1481 1881
##  [9,]  321  721 1121 1521 1921
## [10,]  361  761 1161 1561 1961
mi_lista[["a"]] # por nombre
## [1] "a" "b" "c"

Agregando nuevos datos

Vectores

carro <- c(1, 3, 5)
carro[4] <- 20
carro
## [1]  1  3  5 20

Matrices

matriz <- matrix(data = c(2, 2, 3, 4), ncol = 2)
matriz
##      [,1] [,2]
## [1,]    2    3
## [2,]    2    4
# Añadir nueva columna con cbind()
otro <- c(10, 20)
cbind(matriz, otro)
##          otro
## [1,] 2 3   10
## [2,] 2 4   20
# Añadir una nueva fila con rbind()
rbind(matriz, otro)
##      [,1] [,2]
##         2    3
##         2    4
## otro   10   20

Listas

# Nueva posición en la lista  con el operador $
otra_lista <- list(a = 1, b = 2)
otra_lista
## $a
## [1] 1
## 
## $b
## [1] 2
otra_lista$nueva <- "Edimer" 
otra_lista
## $a
## [1] 1
## 
## $b
## [1] 2
## 
## $nueva
## [1] "Edimer"
# Nuevo valor con []
otra_lista[4] <- 20
otra_lista
## $a
## [1] 1
## 
## $b
## [1] 2
## 
## $nueva
## [1] "Edimer"
## 
## [[4]]
## [1] 20

Bases de datos

Importación

Formatos planos

# Cargando biblioteca
library(tidyverse)

# Valores separados por comas
datos_comas <- read_csv(file = "imc_total_comas.csv")
datos_comas
# Valores separados por puntos y comas
datos_pcomas <- read_csv2(file = "imc_total_puntocomas.csv")

# Valores separados por otro delimitador
datos_otro <- read_delim(file = "imc_total_otrodelim.csv", delim = "|")

Formato Excel

library(readxl)
datos_excel <- read_excel(path = "imc_total.xlsx")
str(datos_excel)
## tibble [19 x 3] (S3: tbl_df/tbl/data.frame)
##  $ Genero: chr [1:19] "Hombre" "Mujer" "Mujer" "Mujer" ...
##  $ Altura: chr [1:19] "1.70" "1.63" "1.58" "1.63" ...
##  $ Peso  : num [1:19] 68 56 58 61 53 48 78 72 78 55 ...
datos_excel$Altura <- as.numeric(datos_excel$Altura)
str(datos_excel)
## tibble [19 x 3] (S3: tbl_df/tbl/data.frame)
##  $ Genero: chr [1:19] "Hombre" "Mujer" "Mujer" "Mujer" ...
##  $ Altura: num [1:19] 1.7 1.63 1.58 1.63 1.58 1.61 1.72 1.85 1.72 1.58 ...
##  $ Peso  : num [1:19] 68 56 58 61 53 48 78 72 78 55 ...
  • ¿Cómo añadir una nueva columna que contenga el IMC de cada estudiante?
datos_excel$imc <- datos_excel$Peso / datos_excel$Altura^2
datos_excel

Exportación

write_csv(x = datos_excel, file = "prueba.csv")