# Creacion de vectores
v1 <- c("Ana", "Beatriz", "Carmen", "Diana", "Elena",
"Fabiana", "Gabriela", "Helga", "Ingrid", "Jacinta")
v2 <- c(22, 26, 20, 23, 19, 24, 22, 25, 20, 28)
v3 <- c(1.64, 1.65, 1.61, 1.66, 1.59, 1.67, 1.72, 1.68, 1.62, 1.70)
v4 <- c(F, F, T, F, T, T, F, F, T, F)Dataframe
1. Creación de dataframe
Creación de un dataframe a partir de vectores.
# Creacion de dataframe
df <- data.frame(Nombres = v1,
Edad = v2,
Estatura = v3,
Soltera = v4)
head(df, n=3) Nombres Edad Estatura Soltera
1 Ana 22 1.64 FALSE
2 Beatriz 26 1.65 FALSE
3 Carmen 20 1.61 TRUE
class(df)[1] "data.frame"
2. Selección de elementos
a. Seleccionar filas
Seleccionar 1 fila
df[2, ] Nombres Edad Estatura Soltera
2 Beatriz 26 1.65 FALSE
Seleccionar varias filas consecutivas
df[3:5, ] Nombres Edad Estatura Soltera
3 Carmen 20 1.61 TRUE
4 Diana 23 1.66 FALSE
5 Elena 19 1.59 TRUE
Seleccionar filas intercaladas
df[c(3,7,10,5), ] Nombres Edad Estatura Soltera
3 Carmen 20 1.61 TRUE
7 Gabriela 22 1.72 FALSE
10 Jacinta 28 1.70 FALSE
5 Elena 19 1.59 TRUE
b. Seleccionar columnas
Seleccionar 1 columna
col1 <- df[2]
head(col1, n=3) Edad
1 22
2 26
3 20
Seleccionar las primeras N filas
# Seleccionar las primeras 3 filas
head(df, n=3) Nombres Edad Estatura Soltera
1 Ana 22 1.64 FALSE
2 Beatriz 26 1.65 FALSE
3 Carmen 20 1.61 TRUE
Seleccionar las últimas N filas
# Seleccionar las ultimas 3 filas
tail(df, n=3) Nombres Edad Estatura Soltera
8 Helga 25 1.68 FALSE
9 Ingrid 20 1.62 TRUE
10 Jacinta 28 1.70 FALSE
Seleccionar varias columnas consecutivas
col2 <- df[2:4]
head(col2, n=3) Edad Estatura Soltera
1 22 1.64 FALSE
2 26 1.65 FALSE
3 20 1.61 TRUE
Seleccionar columnas intercaladas
col3 <- df[c(3,2,1)]
head(col3, n=3) Estatura Edad Nombres
1 1.64 22 Ana
2 1.65 26 Beatriz
3 1.61 20 Carmen
Seleccionar todas las columnas excepto un grupo determinado
# Todas las columnas menos la columna 3 y 4
col4 <- df[-c(3,4)]
head(col4, n=3) Nombres Edad
1 Ana 22
2 Beatriz 26
3 Carmen 20
Seleccionar filas y columnas
# Filas 4 a la 7 / Columnas 1, 2 y 4
col5 <- df[c(4:7),c(1,2,4)]
col5 Nombres Edad Soltera
4 Diana 23 FALSE
5 Elena 19 TRUE
6 Fabiana 24 TRUE
7 Gabriela 22 FALSE
3. Extracción de información
Número de columnas
ncol(df)[1] 4
Número de filas
nrow(df)[1] 10
Dimension: Filas - Columnas
dim(df)[1] 10 4
Nombres de las columnas
colnames(df)[1] "Nombres" "Edad" "Estatura" "Soltera"
Nombres de las filas
head(rownames(df), n=5)[1] "1" "2" "3" "4" "5"
Resumen estadístico
summary(df) Nombres Edad Estatura Soltera
Length:10 Min. :19.00 Min. :1.590 Mode :logical
Class :character 1st Qu.:20.50 1st Qu.:1.625 FALSE:6
Mode :character Median :22.50 Median :1.655 TRUE :4
Mean :22.90 Mean :1.654
3rd Qu.:24.75 3rd Qu.:1.677
Max. :28.00 Max. :1.720
4. Modificacion de filas y columnas
df Nombres Edad Estatura Soltera
1 Ana 22 1.64 FALSE
2 Beatriz 26 1.65 FALSE
3 Carmen 20 1.61 TRUE
4 Diana 23 1.66 FALSE
5 Elena 19 1.59 TRUE
6 Fabiana 24 1.67 TRUE
7 Gabriela 22 1.72 FALSE
8 Helga 25 1.68 FALSE
9 Ingrid 20 1.62 TRUE
10 Jacinta 28 1.70 FALSE
a. Agregar columnas
Agregar una nueva columna al final
# Nueva columna
v5 <- c(62.4, 58.9, 59.2, 65.4, 67.6, 64.3, 66.2, 65.4, 63.7, 69.5)df$Peso <- v5
head(df, n=3) Nombres Edad Estatura Soltera Peso
1 Ana 22 1.64 FALSE 62.4
2 Beatriz 26 1.65 FALSE 58.9
3 Carmen 20 1.61 TRUE 59.2
b. Cambiar posiciones de las columnas
df <- df[c(1,5,2,3,4)]
head(df, n=3) Nombres Peso Edad Estatura Soltera
1 Ana 62.4 22 1.64 FALSE
2 Beatriz 58.9 26 1.65 FALSE
3 Carmen 59.2 20 1.61 TRUE
c. Eliminar columnas
# Eliminar columna 2 y 4
df <- df[-c(2,4)]
head(df, n=3) Nombres Edad Soltera
1 Ana 22 FALSE
2 Beatriz 26 FALSE
3 Carmen 20 TRUE
d. Agregar filas
# Nueva fila
fila <- list("Karen", 25, TRUE)df <- rbind(df, fila)
tail(df, n=3) Nombres Edad Soltera
9 Ingrid 20 TRUE
10 Jacinta 28 FALSE
11 Karen 25 TRUE
e. Cambiar posición de filas
df <- df[c(5,4,3,2,1),]
df Nombres Edad Soltera
5 Elena 19 TRUE
4 Diana 23 FALSE
3 Carmen 20 TRUE
2 Beatriz 26 FALSE
1 Ana 22 FALSE
f. Eliminar filas
# Eliminar fila 2 y 5
df <- df[-c(2,5),]
df Nombres Edad Soltera
5 Elena 19 TRUE
3 Carmen 20 TRUE
2 Beatriz 26 FALSE
5. Modificación de valores
Modificar los valores de una columna
# Modificar los valores de la columna EDAD
df$edad <- c(23,28,24)
df Nombres Edad Soltera edad
5 Elena 19 TRUE 23
3 Carmen 20 TRUE 28
2 Beatriz 26 FALSE 24
Modificar los valores de una fila
# Modificar los valores de la fila 2
df[2,] <- list("Clara", 22, FALSE)
df Nombres Edad Soltera edad
5 Elena 19 TRUE 23
3 Clara 22 FALSE Clara
2 Beatriz 26 FALSE 24
Modificar los valores de una celda
# Modificar la fila 3 y columna 1
df[3,1] <- "Blanca"
df Nombres Edad Soltera edad
5 Elena 19 TRUE 23
3 Clara 22 FALSE Clara
2 Blanca 26 FALSE 24
6. Dataset
a. Importar datasets bases de R
En R existen un conjunto de pequeños datasets que pueden ser usados para practicar. Por ejemplo tenemos:
- iris
- mtcars
- USArrests
- CO2
- quakes
head(iris, n=3) Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
dim(iris)[1] 150 5
summary(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
Median :5.800 Median :3.000 Median :4.350 Median :1.300
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
Species
setosa :50
versicolor:50
virginica :50
b. Crear dataset aleatorio
Importación de libreria
library(MASS)Crear dos variables correlacionadas con el paquete MASS
col_corr <- mvrnorm(n = 50,
mu = c(20, 20),
Sigma = matrix(c(1, 0.4, 0.4, 1), 2, 2))
df_corr <- round(data.frame(col_corr), 1)
names(df_corr) <- c("col1", "col2")Crear variables aleatorias de tipo numérico y categórico.
clase1 <- c("Tipo 1", "Tipo 2", "Tipo 3")
clase2 <- c("Clase A", "Clase B", "Clase C", "Clase D")
col3 <- round(seq(50)/10 + rnorm(50, mean = 18, sd = 0.2),1)
col4 <- seq(from = 1976, to = 2025)
col5 <- sample(clase1, size=50, replace= TRUE, prob= NULL)
col6 <- sample(clase2, size=50, replace= TRUE, prob= NULL)Crear el dataset completo
df_random <- data.frame(df_corr, col3, col4, col5, col6)
head(df_random, n=5) col1 col2 col3 col4 col5 col6
1 18.5 17.7 18.2 1976 Tipo 3 Clase C
2 20.2 19.8 17.9 1977 Tipo 1 Clase C
3 19.5 20.2 18.0 1978 Tipo 1 Clase B
4 20.9 18.9 18.5 1979 Tipo 2 Clase D
5 17.5 17.2 18.5 1980 Tipo 3 Clase A
Exportar dataset
write.csv(x = df_random,
file = 'df_random.csv',
row.names = FALSE)