CULTURA NAZCA, presentación en aula para compartir
Tipos de datos en R
1. Tipos de datos en R
Cristian Alejandro Rojas
carojasq@correo.udistrital.edu.co
DOCTORADO EN INGENIERÍA
CURSO DE R
2. Objetos
R opera con objetos:
● Tipos de datos atómicos
● Vectores y Listas
● Matrices y Dataframes
● Factores
3. 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
4. Tipos de datos atómicos
● Caracter
● Numérico
○ Especiales (Inf y Nan)
● Entero
● Complejo
● Lógico
5. 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)
6. 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
7. 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
8. 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
9. 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)
10. 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)
11. 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)
12. 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 > 4
Retorna lista de valores lógicos que depende de que la condición se cumpla.
13. 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))
14. 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)
15. 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)]
17. 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)
18. 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)
19. 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,]
20. 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)
21. 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)
22. 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
23. 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.