Capítulo 2 Generación de data frames
2.1 Introducción
Se generan dos data frames para en los capítulos posteriores comparar y fusionar data frames.
Las fases del proceso son:
- Generación de dos data frames dfLrt y dfNmr de 100 registros, en ambos casos identificados con un código único del 1 al 100
- Generación de data frames vacíos
- Añadido de columna de códigos de identificación
- Añadido de la columna específica de cada data frame
- Cambio de los nombres de las columnas
- Generación de dos data grames dfLx y dfNy con una parte de los registros de dfLtr y dfNmr respectivamente
El resultado son dos data frames, dfLtr y dfNmr, con 100 registros cada uno y dos columnas:
- La primera columna contiene los códigos de identificación de los registros, es común a los dos data frames. Esta primera columna se denomina IdL en dfLtr e IdN en dfNmr
- La segunda columna es específica de cada data frame
- En dfLtr se denomina Ltr y es de tipo character
- En dfNmr se denomina Nmr y es de tipo numérico
2.2 Generación de dos data frames dfLrt y dfNmr de 100 registros, en ambos casos identificados con un código único del 1 al 100
2.2.1 Generación de data frames vacios
Para generar un data frame se utiliza la función data.frame()
.
Si no se especifica ningún valor para los parámetros de la función, se genera un data frame vacio.
La función admite datos de entrada, características de las filas y columanas, etc. Aquí o aquí se pueden ver algunas posibilidades.
Se generan dos data frames vacíos a los que después se añadirán datos.
2.2.1.1 Data frame dfLtr vacío
dfLtr = data.frame()
paste0("dfLtr[", nrow(dfLtr), " Filas, ", ncol(dfLtr), " Columnas]")
- dfLtr[0 Filas, 0 Columnas]
2.2.1.2 Data frame dfNmr vacío
dfNmr = data.frame()
paste0("dfNmr[", nrow(dfNmr), " Filas, ", ncol(dfNmr), " Columnas]")
- dfNmr[0 Filas, 0 Columnas]
2.2.2 Añadido de columna de códigos de identificación
Se añade una columna de identificador del registro común a los dos data frames. Está columna servirá después de referencia para fusionar los data frames.
Para añadir un vector a una columna de un data frame vacío es necesario identificar el intervalo de filas y el número de la columna.
Se utiliza el el operador “:” para generar una serie de números desde el 1 al 100.
2.2.2.1 Data frame dfLtr con la columna de identificadores
dfLtr[1:100, 1] = 1:100
paste0("dfLtr[", nrow(dfLtr), " Filas, ", ncol(dfLtr), " Columnas]")
- dfLtr[100 Filas, 1 Columnas]
dfLtr[1:10,]
summary(dfLtr)
## [1] 1 2 3 4 5 6 7 8 9 10
## V1
## Min. : 1.00
## 1st Qu.: 25.75
## Median : 50.50
## Mean : 50.50
## 3rd Qu.: 75.25
## Max. :100.00
2.2.2.2 Data frame dfNmr con la columna de identificadores
dfLtr[1:100, 1] = 1:100
paste0("dfNmr[", nrow(dfNmr), " Filas, ", ncol(dfNmr), " Columnas]")
- dfNmr[100 Filas, 1 Columnas]
print(dfNmr[1:10,])
summary(dfNmr)
## [1] 1 2 3 4 5 6 7 8 9 10
## V1
## Min. : 1.00
## 1st Qu.: 25.75
## Median : 50.50
## Mean : 50.50
## 3rd Qu.: 75.25
## Max. :100.00
2.2.3 Añadido de la columna específica de cada data frame
2.2.3.1 Data frame dfLtr
En el data frame dfLtr se añade una columna de tipo character. Se toma un vector de 4 elementos tipo character V01 = c(“Alcachofa,” “Coliflor,” “Adelante,” “Agricultor”)
Para la segunda columna del data frame dfLtr se utiliza la función rep() para generar una serie de 100 elementos repitiendo 25 veces los 4 elementos del vector V01:
dfLtr[1:100, 2] = rep(x = V01, times = 25)
paste0("dfLtr[", nrow(dfLtr), " Filas, ", ncol(dfLtr), " Columnas]")
- dfLtr[100 Filas, 2 Columnas]
En este punto, el data frame dfLtr ya tiene dos columnas
print(dfLtr[1:10,])
summary(dfLtr)
## V1 V2
## 1 1 Alcachofa
## 2 2 Coliflor
## 3 3 Adelante
## 4 4 Agricultor
## 5 5 Alcachofa
## 6 6 Coliflor
## 7 7 Adelante
## 8 8 Agricultor
## 9 9 Alcachofa
## 10 10 Coliflor
## V1 V2
## Min. : 1.00 Length:100
## 1st Qu.: 25.75 Class :character
## Median : 50.50 Mode :character
## Mean : 50.50
## 3rd Qu.: 75.25
## Max. :100.00
2.2.3.2 Data frame dfNmr
Para la segunda columna del data frame dfNmr se utiliza la función rep() para generar una serie de 100 elementos repitiendo 4 veces cada uno de los elementos 1 a 25
dfNmr[1:100, 2] = rep(x = 1:25, each = 4)
paste0("dfNmr[", nrow(dfNmr), " Filas, ", ncol(dfNmr), " Columnas]")
- dfNmr[100 Filas, 2 Columnas]
Al igual que en el caso anterior, en este punto el data frame dfNmr ya tiene dos columnas
print(dfNmr[1:10,])
summary(dfNmr)
## V1 V2
## 1 1 1
## 2 2 1
## 3 3 1
## 4 4 1
## 5 5 2
## 6 6 2
## 7 7 2
## 8 8 2
## 9 9 3
## 10 10 3
## V1 V2
## Min. : 1.00 Min. : 1
## 1st Qu.: 25.75 1st Qu.: 7
## Median : 50.50 Median :13
## Mean : 50.50 Mean :13
## 3rd Qu.: 75.25 3rd Qu.:19
## Max. :100.00 Max. :25
2.2.4 Cambio de los nombres de las columnas
En caso de no asignar nombres a las columnas, se asingan de forma automática.
La función colnames
permite:
- Conocer los nombres de las columnas del data frame
- Asignar nuevos nombres a las columnas del data frame
2.2.4.1 Data frame dfLtr
- Nombres actuales de las columnas:
colnames(dfLtr)
–> V1, V2 - Asignación de nuevos nombres:
colnames(dfLtr) = c("IdL", "Ltr")
–> - Comprobación del cambio de nombres:
colnames(dfLtr)
–> IdL, Ltr
2.2.4.2 Data frame dfNmb
- Nombres actuales de las columnas:
colnames(dfNmr)
–> IdL, Ltr - Asignación de nuevos nombres:
colnames(dfNmr) = c("IdN, "Nmr")
–> - Comprobación del cambio de nombres:
colnames(dfNmr)
–> IdN, Nmr
A efectos de mostrar el funcionamiento de la función merge
, se van a generar dos nuevos data frames, dfLx y dfLy.
2.3 Generación de dos data grames dfLx y dfNy con una parte de los registros de dfLtr y dfNmr respectivamente
2.3.1 Data frame dfLx
El data frame dfLx se genera a partir del data frame dfLtr, anteriormente generado. Se seleccionan los registros cuyo IdL es múltiplo de 2.
dfLx = dfLtr[seq(from = 2, to = 100, by = 2),]
## [1] 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
## [20] 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76
## [39] 78 80 82 84 86 88 90 92 94 96 98 100
paste0("dfLx[", nrow(dfLx), " Filas, ", ncol(dfLx), " Columnas]")
- dfLx[50 Filas, 2 Columnas]
El data frame dfLx generado tiene 50 registros, correspondientes a los identificadores pares entre 0 y 100, y las mismas dos columanas que el data frame dfLtr de partida
print(dfLx[1:10,])
summary(dfLx)
## IdL Ltr
## 2 2 Coliflor
## 4 4 Agricultor
## 6 6 Coliflor
## 8 8 Agricultor
## 10 10 Coliflor
## 12 12 Agricultor
## 14 14 Coliflor
## 16 16 Agricultor
## 18 18 Coliflor
## 20 20 Agricultor
## IdL Ltr
## Min. : 2.0 Length:50
## 1st Qu.: 26.5 Class :character
## Median : 51.0 Mode :character
## Mean : 51.0
## 3rd Qu.: 75.5
## Max. :100.0
2.3.2 Data frame dfNy
El data frame dfLy se genera a partir del data frame dfLtr, anteriormente generado. Se seleccionan los registros cuyo IdL es múltiplo de 3.
dfNy = dfNmr[seq(from = 3, to = 100, by = 3),]
## [1] 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75
## [26] 78 81 84 87 90 93 96 99
paste0("dfNy[", nrow(dfNy), " Filas, ", ncol(dfNy), " Columnas]")
- dfLx[33 Filas, 2 Columnas]
El data frame dfNx generado tiene 33 registros, correspondientes a los identificadores múltiplos de 3 entre 0 y 100, y las mismas dos columnas que el data frame dfNy de partida
print(dfNy[1:10,])
summary(dfNy)
## IdN Nmr
## 3 3 1
## 6 6 2
## 9 9 3
## 12 12 3
## 15 15 4
## 18 18 5
## 21 21 6
## 24 24 6
## 27 27 7
## 30 30 8
## IdN Nmr
## Min. : 3 Min. : 1.00
## 1st Qu.:27 1st Qu.: 7.00
## Median :51 Median :13.00
## Mean :51 Mean :13.12
## 3rd Qu.:75 3rd Qu.:19.00
## Max. :99 Max. :25.00