# Creación de matrices
matrix(data = c(1, 2, 3, 4), ncol = 2)
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
matrix(data = c(1, 5, 10, 50), ncol = 2, byrow = TRUE)
## [,1] [,2]
## [1,] 1 5
## [2,] 10 50
matrix(data = seq(from = 1, to = 200, by = 10), ncol = 4)
## [,1] [,2] [,3] [,4]
## [1,] 1 51 101 151
## [2,] 11 61 111 161
## [3,] 21 71 121 171
## [4,] 31 81 131 181
## [5,] 41 91 141 191
# Asignación de una matriz
mi_matriz <- matrix(data = seq(from = 1, to = 200, by = 10), ncol = 4)
mi_matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 51 101 151
## [2,] 11 61 111 161
## [3,] 21 71 121 171
## [4,] 31 81 131 181
## [5,] 41 91 141 191
# Funciones sobre matrices
nrow(mi_matriz)
## [1] 5
ncol(mi_matriz)
## [1] 4
dim(mi_matriz)
## [1] 5 4
rowSums(mi_matriz)
## [1] 304 344 384 424 464
colSums(mi_matriz)
## [1] 105 355 605 855
colMeans(mi_matriz)
## [1] 21 71 121 171
rowMeans(mi_matriz)
## [1] 76 86 96 106 116
# Nombres de filas y columnas
rownames(mi_matriz)
## NULL
colnames(mi_matriz)
## NULL
mi_matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 51 101 151
## [2,] 11 61 111 161
## [3,] 21 71 121 171
## [4,] 31 81 131 181
## [5,] 41 91 141 191
mi_matriz[c(3, 4), c(2, 3)]
## [,1] [,2]
## [1,] 71 121
## [2,] 81 131
mi_matriz[3, ] # la fila 3 con todas las columnas
## [1] 21 71 121 171
mi_matriz[, 4] # la columna 4 con todas sus filas
## [1] 151 161 171 181 191
mi_matriz2 <- matrix(data = c(1, 2, 3, 4), ncol = 2,
dimnames = list(c("F1", "F2"), c("C1", "C2")))
mi_matriz2
## C1 C2
## F1 1 3
## F2 2 4
dimnames(mi_matriz2)
## [[1]]
## [1] "F1" "F2"
##
## [[2]]
## [1] "C1" "C2"
list(1, 2, 3)
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
##
## [[3]]
## [1] 3
list(1, TRUE, "A")
## [[1]]
## [1] 1
##
## [[2]]
## [1] TRUE
##
## [[3]]
## [1] "A"
# Lista con nombre
list(p1 = 1, p2 = TRUE, p3 = "A")
## $p1
## [1] 1
##
## $p2
## [1] TRUE
##
## $p3
## [1] "A"
# Asignar una lista
mi_lista <- list(p1 = 1, p2 = TRUE, p3 = "A")
mi_lista
## $p1
## [1] 1
##
## $p2
## [1] TRUE
##
## $p3
## [1] "A"
length(mi_lista)
## [1] 3
names(mi_lista)
## [1] "p1" "p2" "p3"
# Cambiar los nombres con names()
names(mi_lista) <- c("n1", "n2", "n3")
mi_lista
## $n1
## [1] 1
##
## $n2
## [1] TRUE
##
## $n3
## [1] "A"
names(mi_lista)
## [1] "n1" "n2" "n3"
list(p1 = mi_matriz, bd = iris)
## $p1
## [,1] [,2] [,3] [,4]
## [1,] 1 51 101 151
## [2,] 11 61 111 161
## [3,] 21 71 121 171
## [4,] 31 81 131 181
## [5,] 41 91 141 191
##
## $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
# Subconjunto con []
mi_lista[2]
## $n2
## [1] TRUE
# Subconjunto con [[]]
mi_lista[[2]]
## [1] TRUE
mi_lista[["n2"]]
## [1] TRUE
# Subconjunto con $
mi_lista$n2
## [1] TRUE
mi_vector1 <- c(10, 50)
mi_vector1[3] <- 20
mi_vector1
## [1] 10 50 20
mi_matriz2
## C1 C2
## F1 1 3
## F2 2 4
otro <- c(50, 100)
# Añadir una nueva columna
cbind(mi_matriz2, otro)
## C1 C2 otro
## F1 1 3 50
## F2 2 4 100
# Añadir una nueva fila
rbind(mi_matriz2, otro)
## C1 C2
## F1 1 3
## F2 2 4
## otro 50 100
mi_lista
## $n1
## [1] 1
##
## $n2
## [1] TRUE
##
## $n3
## [1] "A"
mi_lista[1] <- 50
mi_lista
## $n1
## [1] 50
##
## $n2
## [1] TRUE
##
## $n3
## [1] "A"
# Cargando la biblioteca tidyverse
library(tidyverse)
# Datos separados por comas
datos_comas <- read_csv(file = "imc_total_comas.csv") # readr
ejemplo_base <- read.csv(file = "imc_total_comas.csv") # R base (utils)
# Datos separados por punto y coma
datos_pcomas <- read_csv2(file = "imc_total_puntocomas.csv")
prueba <- read_csv(file = "imc_total_puntocomas.csv") # incorrecto
# Datos separados por tabulación (" ")
datos_espacios <- read_tsv(file = "imc_total_espacios.csv")
# Datos con otro delimitador (ej. |)
datos_delim <- read_delim(file = "imc_total_otrodelim.csv", delim = "|")
datos_comas
library(readxl)
datos_excel <- read_excel(path = "imc_total.xlsx")
datos_excel
class(datos_excel)
## [1] "tbl_df" "tbl" "data.frame"
# Ejemplo de subconjunto en data frames
datos_excel[c(1, 19), ]
# Accediendo a una columna con [[]]
datos_excel[[3]]
## [1] 68 56 58 61 53 48 78 72 78 55 80 75 78 50 51 74 66 56 57
datos_excel[["Peso"]]
## [1] 68 56 58 61 53 48 78 72 78 55 80 75 78 50 51 74 66 56 57
# Accediendo a una columna a través de $
datos_excel$Altura
## [1] "1.70" "1.63" "1.58" "1.63" "1.58" "1.61" "1.72" "1.85" "1.72" "1.58"
## [11] "1.84" "1.77" "1.72" "1.57" "1.55" "1.70" "1.66" "1.59" "1.62"
str(datos_excel)
## tibble [19 x 3] (S3: tbl_df/tbl/data.frame)
## $ Género: 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)
## $ Género: 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 ...
datos_excel$imc <- datos_excel$Peso / datos_excel$Altura^2
datos_excel
write_csv(x = datos_excel, file = "prueba.csv")