unidad 4: matrices, marcos de datos y …fran/tib/semana4.pdf · ciencias de la computación e...

31
UNIDAD 4: MATRICES, MARCOS DE DATOS Y LECTURA DE DATOS EN R Técnicas Inteligentes en Bioinformática Máster en Lógica, Computación e Inteligencia Artificial Dpto. Ciencias de la Computación e Inteligencia Artificial Francisco J. Romero Campero Universidad de Sevilla

Upload: ngodat

Post on 25-Sep-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

UNIDAD 4: MATRICES, MARCOS DE DATOS Y LECTURA

DE DATOS EN R

Técnicas Inteligentes en BioinformáticaMáster en Lógica, Computación e Inteligencia Artificial Dpto. Ciencias de la Computación e Inteligencia Artificial

Francisco J. Romero Campero

Universidad de Sevilla

Page 2: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

TIPOS DE DATOSo Simples:

Numéricos Lógicos Caracteres Cadenas

o Compuestos Vectores Listas Matrices Marcos de datos

Page 3: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: constructores Colección de datos del mismo tipo que tiene

dos dimensiones. Para crear una matriz usamos la función

matrix Los elementos se proporcionan en un vector y

se colocan por columnas.

> matrix(1:10, nrow = 2, ncol = 5)

[,1] [,2] [,3] [,4] [,5]

[1,] 1 3 5 7 9

[2,] 2 4 6 8 10

Page 4: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: constructores Los datos se reciclan hasta completar la

matriz.

> matrix(1:3, nrow = 2, ncol = 3)

[,1] [,2] [,3]

[1,] 1 3 2

[2,] 2 1 3

Page 5: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: constructores Mediante el argumento byrow podemos hacer

que los elementos se coloquen por filas.

> matrix(1:10, nrow = 2, ncol = 5, byrow = TRUE)

[,1] [,2] [,3] [,4] [,5]

[1,] 1 2 3 4 5

[2,] 6 7 8 9 10

Page 6: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores La función dim devuelve las dimensiones de

la matriz. La función nrow devuelve el número de filas. La función ncol devuelve el número de

columnas.> M <- matrix(1:15, nrow = 3, ncol = 5)

> dim(M)

[1] 3 5

> nrow(M)

[1] 3

> ncol(M)

[1] 5

Page 7: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores Podemos acceder a los elementos de una

matriz mediante sus índices.> dim(M)

[1] 3 5

> M[1, 2]

[1] 4

> M[2, 5]

[1] 14

> M[5, 3]

Error: subíndice fuera de los límites

Page 8: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores Las filas y las columnas pueden tener

nombres

> rownames(M) <- c("uno", "dos", "tres")

> colnames(M) <- c("uno", "dos", "tres", "cuatro", "cinco")

> M

uno dos tres cuatro cinco

uno 1 4 7 10 13

dos 2 5 8 11 14

tres 3 6 9 12 15

Page 9: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores Podemos seleccionar un elemento por el nombre

de su fila y su columna> M["dos", "tres"]

[1] 8

Selección de filas> M[1,]

uno dos tres cuatro cinco

1 4 7 10 13

Selección de columnas> M[,3]

uno dos tres

7 8 9

Page 10: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores Selección por matriz de índices.> IJ1 <- matrix(c(1, 1, 1, 4, 2, 3), ncol = 2, byrow = TRUE)

> M[IJ1] # Los elementos (1,1)-ésimo, (1,4)-ésimo y (2,3)-ésimo de M

[1] 1 10 8

Page 11: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores Modificación de los elementos de una matriz> M[c(1, 2), c(1, 3, 4)] <- 0

> M

uno dos tres cuatro cinco

uno 0 4 0 0 13

dos 0 5 0 0 14

tres 3 6 9 12 15

Page 12: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: accesores y modificadores Modificación de los elementos de una matriz> M[c(1, 2), c(1, 3, 4)] <- c(-1, -2, -3)

> M

uno dos tres cuatro cinco

uno -1 4 -3 -2 13

dos -2 5 -1 -3 14

tres 3 6 9 12 15

Page 13: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

Todos los elementos deben ser del mismo tipo, en caso contrario, R realiza un ajuste.

> M[1, 1] <- "-1"

> M

uno dos tres cuatro cinco

uno "-1" "4" "-3" "-2" "13"

dos "-2" "5" "-1" "-3" "14"

tres "3" "6" "9" "12" "15"

Page 14: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes Las operaciones aritmético-lógicas se realizan

elemento a elemento.

> v1 <- seq(1, 11, by = 2)

> v2 <- seq(0, 10, by = 2)

> M1 <- matrix(v1, nrow = 2)

> M2 <- matrix(v2, nrow = 2)

> M3 <- matrix(v1, nrow = 3)

Page 15: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes> M1

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 3 7 11

> M2

[,1] [,2] [,3]

[1,] 0 4 8

[2,] 2 6 10

> M3

[,1] [,2]

[1,] 1 7

[2,] 3 9

[3,] 5 11

Page 16: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes> M1 + M2 # Suma elemento a elemento.

[,1] [,2] [,3]

[1,] 1 9 17

[2,] 5 13 21

> M1 * M2 # Multiplicación elemento a elemento

[,1] [,2] [,3]

[1,] 0 20 72

[2,] 6 42 110

Page 17: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes Multiplicación de matrices (filas x columnas)> M1 %*% M3

[,1] [,2]

[1,] 61 151

[2,] 79 205

Al aplicar operaciones aritmético-lógicas, las matrices deben tener el mismo número de filas y columnas.

En el caso de la multiplicación %*%, el nº de columnas de la primera matriz debe ser igual al nº de filas de la segunda matriz

Page 18: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes Concatenación de matrices> cbind(M1, M2) # Concatena las matrices por columnas

[,1] [,2] [,3] [,4] [,5] [,6]

[1,] 1 5 9 0 4 8

[2,] 3 7 11 2 6 10

> rbind(M1, M2) # Concatena las matrices por filas

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 3 7 11

[3,] 0 4 8

[4,] 2 6 10

Page 19: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes Las matrices deben tener el mismo número

de filas para concatenar por filas.

Las matrices deben tener el mismo número de columnas para concatenar por columnas.

Page 20: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes La función apply permite aplicar una función

a todas las filas, columnas o elementos de una matriz.

> apply(M1, 1, mean) # Calcula la media de cada fila

[1] 5 7

> apply(M1, 2, mean) # Calcula la media de cada columna

[1] 2 6 10

> apply(M1, c(1, 2), sqrt) # Calcula la raíz cuadrada de cada elemento.

[,1] [,2] [,3]

[1,] 1.000000 2.236068 3.000000

[2,] 1.732051 2.645751 3.316625

Page 21: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MATRICES: funciones relevantes Otras funciones útiles:> rowSums(M1)

[1] 15 21

> colSums(M1)

[1] 4 12 20

> rowMeans(M1)

[1] 5 7

> colMeans(M1)

[1] 2 6 10

Page 22: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

TIPOS DE DATOSo Simples:

Numéricos Lógicos Caracteres Cadenas

o Compuestos Vectores Listas Matrices Marcos de datos

Page 23: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MARCOS DE DATOS: constructores Estructura más genérica que una matriz. Es como una matriz con la posibilidad de

tener elementos de distintos tipos en las columnas.

Para crear un marco de datos se utiliza la función data.frame

> altura <- c(150, 135, 210, 140)

> peso <- c(65, 61, 100, 65)

> sexo <- c("F", "F", "M", "F")

> estudio <- data.frame(peso,altura,sexo)

Page 24: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MARCOS DE DATOS: constructores Las columnas reciben el nombre de las variables

que se utilizaron. Por defecto, las filas reciben los nombres

“1”,”2”,”3”,...> estudio

peso altura sexo

1 65 150 F

2 61 135 F

3 100 210 M

4 65 140 F

> rownames(estudio)

[1] "1" "2" "3" "4"

> colnames(estudio)

[1] "peso" "altura" "sexo"

Page 25: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MARCOS DE DATOS: constructores Podemos definir el nombre de las filas> rownames(estudio) <- c("Marta", "Inés", "Juan", "Carmen")

> estudio

peso altura sexo

Marta 65 150 F

Inés 61 135 F

Juan 100 210 M

Carmen 65 140 F

Page 26: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MARCOS DE DATOS: accesores Acceso a datos> estudio["Marta", "peso"] # El peso de Marta

[1] 65

> estudio[, "peso"] # La columna de pesos. Es un vector.

[1] 65 61 100 65

> estudio["Marta",] # Los datos de Marta. Es un marco de datos.

peso altura sexo

Marta 65 150 F

Page 27: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

MARCOS DE DATOS: accesores Acceso a datos> estudio[["peso"]] # La columna de pesos. Es un vector.

[1] 65 61 100 65

> estudio[c("peso", "altura")] # Las columnas de pesos y alturas. Es un marco de datos.

peso altura

Marta 65 150

Inés 61 135

Juan 100 210

Carmen 65 140

Page 28: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

LECTURA DE DATOS Podemos leer un marco de datos desde un

fichero de texto mediante la función read.table El fichero debe seguir un formato:

Todas las filas deben tener el mismo número de elementos, salvo la primera, que tiene uno menos.

La primera fila contiene los nombres de las columnas. El resto de filas contienen como primer elemento e nombre de la fila y como resto de elementos los datos.

Los datos se separan por espacios en blanco.La coma de los decimales es un punto (.)Los valores desconocidos se expresan como NA

Page 29: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

LECTURA DE DATOS Ejemplo de fichero: estudio.txt

“Peso” “altura” “sexo”

“Marta” 65 150 “F”

“Inés” 61 135 “F”

“Juan” 100 210 “M”

“Carmen” 65 140 “F”

Lectura del fichero> estudio1 <- read.table(“estudio.txt”)

Page 30: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

LECTURA DE DATOS La función count.fields cuenta los elementos

de cada fila de un fichero.

> count.fields(“estudio.txt”)

[1] 3 4 4 4 4

Page 31: UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e Inteligencia Artificial ... para la asignatura Informática Aplicada a la Bioquímica

This work is licensed under the Creative Commons Attribution-NonCommercial NoDerivs 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/.

Estas transparencias están basadas en el material docente desarrollado por Francisco J. Romero Campero e Ignacio Pérez Hurtado de Mendoza para la asignatura Informática Aplicada a la Bioquímica del Grado Conjunto en Bioquímica por la Universidad de Sevilla y la Universidad de Málaga (Andalucía Tech). Este trabajo está liberado bajo la licencia Creative Commons Attribution-NonCommercial NoDerivs 3.0 Unported License.