Tipos de datos en R

23
Tipos de datos en R Cristian Alejandro Rojas [email protected] DOCTORADO EN INGENIERÍA CURSO DE R

Transcript of Tipos de datos en R

Page 1: Tipos de datos en R

Tipos de datos en RCristian Alejandro Rojas

[email protected]

DOCTORADO EN INGENIERÍACURSO DE R

Page 2: Tipos de datos en R

Objetos R opera con objetos:

● Tipos de datos atómicos● Vectores y Listas● Matrices y Dataframes● Factores

Page 3: Tipos de datos en R

Algunas funciones generales para el manejo de objetos

● class(obj) : Retorna el tipo de clase de un objeto.● object.size(obj): Retorna el tamaño de un objeto en memoria .● str(obj) : Muestra la estructura de un objeto de manera compacta.● summary(obj): Genera información “resumen” de determinado objeto.● head(obj) ó tail(obj): Útil para visualizar los primeros o últimos 10 elementos

de una lista, vector, matriz o dataframe.● set.seed(124): Define semilla para la generación de números aleatorios.

Máxima asignación de memoria a un proceso● Visualizar: ulimit -v● Definir: ulimit -v 4000000

Page 4: Tipos de datos en R

Tipos de datos atómicos● Caracter● Numérico

○ Especiales (Inf y Nan)

● Entero● Complejo● Lógico

Page 5: Tipos de datos en R

Tipos de datos atómicos: Caracteres y Strings● Se refiere a un carácter o una cadena de texto.● Clase: character

x <- “Hola”

● Concatenacíon

c <- paste(a,b)

● Tamaño de un string

nchar(c)

Page 6: Tipos de datos en R

Tipos de datos atómicos: Numéricos ● Similar a double● Clase: numeric● Máximo posible y mínimo posible

.Machine$double.xmax .Machine$double.xmin

● Se ejemplifica así:

x <- 2

Page 7: Tipos de datos en R

Tipos de datos atómicos: Numéricos (Especiales)

● Inf○ Representa a infinito. Puede ser resultado de una operación de división por 0.

x <- 1/0

● Nan○ Representa un valor no numérico o no determinado como por ejemplo un dato faltante en un

dataset. Puede también ser el resultado de una operación no válida. Ejemplo:

x <- Inf/Inf

Page 8: Tipos de datos en R

Tipos de datos atómicos: Enteros● Util para representar IDs.● Class: Integer● Se deben declarar específicamente a través de:

x <- as.integer(1)

x <- 1L

● Máximo posible y mínimo posible

.Machine$integer.xmax .Machine$integer.xmin

Page 9: Tipos de datos en R

Tipos de datos atómicos: Complejos● Class: complex● Se ejemplifican así:

● Módulo, argumento y conjugado

● Raíz cuadrada de un número negativo

sqrt(as.complex(1))

complex(real = x, imaginary = y) x <- 1 + 1i

Mod(x) Arg(x) Conj(z)

Page 10: Tipos de datos en R

Tipos de datos atómicos: Lógicos ● Datos de tipo Booleano (TRUE, FALSE)

x <- FALSE

● Se puede asignar mediante una comparación

z <- (1>5)

Page 11: Tipos de datos en R

Listas y Vectores: Vectores

● Colección de objetos del mismo tipo.● Se ejemplifica así:

● Concatenación

concatenado <- c(a,a)

a <- c(1,2,3...) a <- 1:10

x<-runif(100,100, 200) x <- seq(1,100,2)

Page 12: Tipos de datos en R

Listas y Vectores: Listas● Se ejemplifica así:

l <- list(“carro”, 1, 2, TRUE, FALSE)

● Puede contener objetos de cualquier tipo (Incluso otras listas)

#Ejemplo conteniendo otros objetos de tipo no atómico

pts <- list(x = cars[,1], y = cars[,2])● Obtener lista de valores lógicos basado en condicional

x > 4Retorna lista de valores lógicos que depende de que la condición se cumpla.

Page 13: Tipos de datos en R

Listas y Vectores: Comparación de desempeño

● Memoria

● Procesamiento

> format(object.size(a), units="auto")[1] "76.3 Mb"

format(object.size(b), units="auto")[1] "534.1 Mb"

system.time(a+a) user system elapsed 0.857 1.129 2.388

system.time(lapply(seq_along(b),function(i)+ unlist(b[i])+unlist(+ b[i]))) user system elapsed 67.002 0.000 66.091

a <- runif(10000000, 10, 100) b <- as.list(runif(10000000))

Page 14: Tipos de datos en R

Matrices y Dataframes: Matrices● Almacena datos del mismo tipo. Class: matrix● Se ejemplifica así:

● Es posible darles un nombre de columna y de fila.

● Algunas operaciones básicas:

rownames(a) <- c('a', 'a', 'a', 'b', 'b', 'b') colnames(a) <- c('foo', 'bar', 'bat')

matrix(data, nrow=filas, ncol=columnas) matrix(1:18, nrow=6, ncol=3)

sum(Matrix)dim(Matrix)

rowSums(Matrix)nrow(Matrix)

colSums(Matrix)ncol(Matrix)

Page 15: Tipos de datos en R

Matrices y Dataframes: Matrices (Acceso)● Acceder a un dato específico

● Acceder a una fila o filas

● Acceder a una columna o columnas

● Acceder a una sección específica

a[10] <- Accede al décimo elemento. Si es una matriz de 6x3 accede al elemento 4 de la segunda columna.

a[4,2] <- Accede al elemento 4 de la 2 columna.

a[3,] a[c(2,3),]

a[,3] a[,c(2,3)]

a[3,3] a[c(2,3),c(2,3)]

Page 16: Tipos de datos en R

Matrices y Dataframes: Matrices (Operaciones)● Añadir fila

rbind(a, c(1,2,3))

● Añadir columna

cbind(a, c(1,2,3,212,2,12))

● Concatenar matrices○ Horizontalmente (c <-cbind(a,b))○ Verticalmente (d <-rbind(a,b))

Page 17: Tipos de datos en R

Matrices y Dataframes: Dataframes● Clase: data.frame● Similar a una base de datos relacional.● Se ejemplifica así:

df<-data.frame(cbind(School=1, ID=1:5, Test=c(“math”,”read”,”math”,”geo”,”hist”)))

● Cada columna tiene asignado un tipo de dato.

str(df)

● Cada columna tiene asignado un nombre.

names(df)

Page 18: Tipos de datos en R

Matrices y Dataframes: Dataframes● Para cambiar los nombres de las columnas se puede usar:

names(df) <- c(“Col1”, “Col2renamed”, “Col3”)

● Es el tipo de dato más común en el cual se almacenan datasets.

Ejemplo: Datasets contenidos en HistData.

● Algunas operaciones básicas:

sum(df)dim(df)

rowSums(df)nrow(df)

colSums(df)ncol(df)

Page 19: Tipos de datos en R

Matrices y Dataframes: Dataframes (Acceso)● Acceso por nombre de columna o columnas (2 notaciones)

● Acceso por número de fila o varias filas

● Accediendo por condición

df[1,] df[c(1,2), ], df[seq(1,20,2),]

df$Columna df[,c(“Col1”, “Col2”)] df[,c(“Col1”, “Col2”)]

df[df$Col>5,] df[df$Col==”5”,] df[df$col1>69 & df$col2>73,]

Page 20: Tipos de datos en R

Matrices y Dataframes: Dataframes (Operaciones)● Añadir una nueva Columna (Mismo tamaño de columna)

df$nuevacolumna <- c(1,2,3)

● Añadir nueva fila de datos o concatenar 2 dataframes (Mismas columnas)

new <- rbind(a, b)

Page 21: Tipos de datos en R

Factores● Clase: factors● Compuesto de levels y names.● Útiles para categorización de datos.● Ejemplificación

#Desde lista de valores:

schtyp <- sample(0:1, 20, replace = TRUE)schtyp <- factor(schtyp, labels = c("private", "public"))

# Desde cadena de texto

strings <- c("low", "middle", "low", "low", "low", "low", "middle", "low", "middle", "middle", "middle", "middle", "middle", "high", "high", "low", "middle", "middle", "low", "high")data <- as.factor(strings)

Page 22: Tipos de datos en R

Funciones de conversión ● as.class(obj) -> Convierte un objeto o una colección de objetos de un tipo de

dato a otro tipo de dato. class puede ser:○ character○ list○ vector○ matrix○ factor○ logical○ data.frame○ complex

Page 23: Tipos de datos en R

Funciones de validación ● is.class(obj) -> Verifica que un objeto se a de determinada clase. class puede

ser:○ character○ list○ vector○ matrix○ factor○ logical○ data.frame○ complex

● Is.integer no verifica que el dato sea entero sino que sea almacenado como entero.