Tipos de datos en R
-
Upload
cristian-alejandro-rojas-quintero -
Category
Education
-
view
227 -
download
2
Transcript of Tipos de datos en R
Objetos R opera con objetos:
● Tipos de datos atómicos● Vectores y Listas● Matrices y Dataframes● Factores
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
Tipos de datos atómicos● Caracter● Numérico
○ Especiales (Inf y Nan)
● Entero● Complejo● Lógico
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)
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
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
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
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)
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)
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)
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.
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))
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)
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)]
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))
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)
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)
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,]
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)
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)
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
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.