El paquete readr es útil para una gran cantidad de datos.
read_csv : para leer archivos con coma (“,”) como separador.
read_csv2: para leer archivos con punto y coma (“;”) como separador.
read_tsv : para leer archivos con tabulador (“) como separador.
read_delim(,sep =’|’): para leer archivos con separador distintos como puede ser el símbolo ‘|’.
file.choose() permite elegir desde un cuadro de archivos.
misDatos <- read_tsv("http://www.sthda.com/upload/boxplot_format.txt")
# TIPO 1: archivo con solo datos sin encabezados
tusDatos <- read_csv(file.choose(),skip = 0,col_names = FALSE)
# TIPO 2: el archivo tiene una primera línea con encabezados + datos
tusDatos <- read_csv(file.choose(),skip = 0,col_names = TRUE)
# TIPO 3: encabezado con muchas filas (9 filas de texto antes del encabezado) + datos
tusDatos <- read_csv(file.choose(),skip = 8,col_names = TRUE)
Read.table
Cuando no sean demasiados datos. En este caso NO vas a leer las dos primeras filas y la tercera serán los nombres de las columnas (de las variables). Además el separador será en ; .
misDatos <- read.table(file.choose(), skip = 2, header =TRUE, sep =";")
Dentro de la librerias para trabajar con Excel:
readxl
install.packages("readxl")
library(readxl)
datos <- read_excel("informacion.xlsx")
#leer en forma interactiva desde una ventana de selección de archivos la primera hoja del archivo
datos <- read_excel(file.choose(), sheet=1)
#leer una hoja determinada
datos <- read_excel("archivo.xlsx", sheet="hoja 2")
Contabilizar los NA de cada columna en un dataframe
na_count <-sapply(dataset, function(y) sum(length(which(is.na(y)))))
#ver una tabla con esta lista
na_count <- data.frame(na_count)
otra manera con sapply
sapply(dataset, function(x) sum(is.na(x)))
# pro: simple y no depende de otros paquetes
# cons: no define tipo de tabla
Contar el número de Na en el dataframe completo
sum(is.na(df))
Contar número de NA o blancos en cada columna.
colSums(is.na(data_set_name)|data_set_name == '')
Con tidyverse contamos el número de nulos en cada columna.
library(tidyverse)
library(purrr)
df %>%
map_df(function(x) sum(is.na(x))) %>%
gather(feature, num_nulls) %>%
print(n = 100)
Otra opción para contabilizar todos los NA
library(tidyverse)
# Example data
df <- tibble(col1 = c(1, 2, 3, NA),
col2 = c(NA, NA, "a", "b"))
df %>% summarise_all(~ sum(is.na(.)))
Otra forma
dataset %>%
select(everything()) %>% # replace to your needs
summarise_all(funs(sum(is.na(.))))
Contar en forma simple los NA a nivel de filas usando apply. Se cuenta caso a caso
apply(dataset, MARGIN=1, function(x) sum(is.na(x)))
Lo mismo con dplyr
dataset %>%
rowwise %>%
summarise(NA_per_row = sum(is.na(.)))
library(tibble)
library(tidyr)
install.packages("naniar")
library(naniar)
Reemplazar ciertos valores de una columna en un dataframe a NA
library(naniar)
dataset %>% replace_with_na(replace = list(columna = -99))
dataset %>% replace_with_na(replace = list(columna = "No hay"))
Reemplazar dos valores posibles (-99, -98) a NA
dataset %>%
replace_with_na(replace = list(columna = c(-99, -98)))
Reemplazar los valores en todas las columnmas numericas, col1 y col2
dataset %>%
replace_with_na(replace = list(col1 = c(-99,-98), col2 = c(-99, -98)))
Reemplaza en columna “CONCRETO” los valores de “NO APLICA” a “NA”.
datos <- as.data.frame(datos) %>%
replace_with_na(datos, replace = list(CONCRETO = "NO APLICA"))
Mostrar solo los registros con NA en la columna2
dataset %>% filter(is.na(columna2))
Excluir los registros con NA en la columna2
dataset %>% filter(!is.na(columna2))
Quiere saber que datos se repite con mayor frecuencia? ** datos numericos
#instalar paquete fdth
#install.packages(fdth)
library(fdth)
#tabla de frecuencias
table(datos$variable)
#tabla de proporciones
table(datos$variable) /length(datos$variable)
Si queremos averiguar las frecuencias relativas, en vez de las absolutas.
prop.table (Tabla) # Proporción con respecto al total de los datos de la tabla
prop.table (Tabla, 1) # Proporción con respecto al total de los datos de cada fila
prop.table (Tabla, 2) # Proporción con respecto al total de los datos de cada columna
Si queremos averiguar el total de datos por fila o columna
margin.table(Tabla, 1) # Por fila
margin.table(Tabla, 2) # Por columna
Una tabla de contingencia revela relación entre variables
Tabla = table (datos$variable1, datos$variable2)
< : for less than
> : for greater than
<= : for less than or equal to
>= : for greater than or equal to
== : for equal to each other
!= : not equal to each other
%in% : group membership. For example, “value %in% c(2, 3)” means that value can takes 2 or 3.
is.na() : is NA
!is.na() : is not NA.
value == 2|3 # significa que value es igual a 2 ó (|) 3.
value %in% c(2, 3) # es equivalente a value == 2|3.
# & significa and. For example
sex == "female" & edad > 25
# extraer filas por posición
my_data %>% slice(1:6)
# extraer por un criterio
my_data %>% filter(Sepal.Length > 7)
# extraer por más de un criterio
my_data %>% filter(Sepal.Length > 6.7, Sepal.Width <= 3)
my_data %>% filter(Sepal.Length > 6.7, Species == "versicolor")
# usando operador OR (|)
my_data %>% filter(
Sepal.Length > 6.7,
Species == "versicolor" | Species == "virginica"
)
# equivalente %in%
my_data %>% filter(
Sepal.Length > 6.7,
Species %in% c("versicolor", "virginica" )
)
# crea un nuevo dataset removiendo la columna "Species":
my_data2 <- my_data %>% select(-Species)
set.seed(1234)
# Extract 5 random rows without replacement
my_data %>% sample_n(5, replace = FALSE)
# Extract 5% of rows, randomly without replacement
my_data %>% sample_frac(0.05, replace = FALSE)
Cambiar tamaño de textos en graficos utilice “cex” (character expansion ratio). El valor por defecto es 1. Para reducir el tamaño, usa un valor menor que 1, para aumentar el tamaño usa un valor mayor que 1.
cex.main : tamaño del título.
cex.lab: Tamaño de los textos que describen los ejes
cex.axis: Tamaño de los valores de los ejes
plot(x, y, main="Effects", xlab="Título eje X", ylab="Título eje Y", cex.main=1.25, cex.lab=1.5, cex.axis=0.75)