El paquete data.table se utiliza para facilitar las operaciones de manipulación de datos, como las operaciones de creación de subconjuntos, agrupación y actualización de la tabla de datos en el lenguaje de programación R.
Los métodos de indexación se utilizan para crear una nueva columna que calcula el retraso con el valor anterior encontrado dentro del mismo grupo. El grupo se ilustra utilizando el atributo «por». La nueva columna se agrega y sus valores correspondientes se agregan mediante el método c(NA, x[-.N]), donde x es un indicador de la columna que se usará para calcular el valor de la nueva columna. La primera instancia de un valor en un grupo particular se reemplaza usando NA.
Sintaxis:
dt[, nombre-nueva-col := c(NA, x[-.N]), by ]
Ejemplo 1: Comparación de filas adyacentes en R Data.table
R
# importing required packages library("data.table") # declaring data frame data_frame <- data.table(col1 = sample(letters[1:4],12, replace = TRUE), col2 = sample(1:6 , 12, replace = TRUE) ) print ("original data frame") print (data_frame) # computing lag group by column1 data_frame[, lag := c(NA, col2[-.N]), by = col1] print ("modified data frame") print (data_frame)
Producción
[1] "original data frame" col1 col2 1: b 6 2: c 5 3: a 1 4: d 6 5: d 5 6: b 6 7: b 5 8: a 2 9: c 6 10: a 3 11: a 4 12: d 1 [1] "modified data frame" col1 col2 lag 1: b 6 NA 2: c 5 NA 3: a 1 NA 4: d 6 NA 5: d 5 6 6: b 6 6 7: b 5 6 8: a 2 1 9: c 6 5 10: a 3 2 11: a 4 3 12: d 1 5
Ahora, la diferencia entre filas adyacentes se calcula usando la fórmula donde los valores de la nueva columna y la columna existente x se usan en la tabla de datos.
Sintaxis:
data_frame[, diff-col := x – new-col-name]
Ejemplo 2: diferencia entre data.table adyacente en R
R
# importing required packages library("data.table") # declaring data frame data_frame <- data.table(col1 = sample(letters[1:4],12, replace = TRUE), col2 = sample(1:6 , 12, replace = TRUE) ) print ("original data frame") print (data_frame) # computing lag group by column1 data_frame[, lag := c(NA, col2[-.N]), by = col1] print ("modified data frame") print (data_frame) data_mod <-data_frame[, difference := col2 - lag] print ("modified data frame") print (data_mod)
Producción
[1] "original data frame" col1 col2 1: a 1 2: d 3 3: d 6 4: d 3 5: d 2 6: b 4 7: d 5 8: c 6 9: d 2 10: b 4 11: d 1 12: a 6 [1] "modified data frame" col1 col2 lag difference 1: a 1 NA NA 2: d 3 NA NA 3: d 6 3 3 4: d 3 6 -3 5: d 2 3 -1 6: b 4 NA NA 7: d 5 2 3 8: c 6 NA NA 9: d 2 5 -3 10: b 4 4 0 11: d 1 2 -1 12: a 6 1 5
Ejemplo 3:
R
# importing required packages library("data.table") # declaring data frame data_frame <- data.table(col1 = sample(letters[1:4],16, replace = TRUE), col2 = 100:115 ) print ("original data frame") print (data_frame) # computing difference data_frame[, col3 := c(NA, col2[-.N]), by = col1] data_mod <-data_frame[, difference := col2 - col3] print ("modified data frame") print (data_mod)
Producción
[1] "original data frame" col1 col2 1: d 100 2: a 101 3: b 102 4: a 103 5: d 104 6: d 105 7: c 106 8: a 107 9: b 108 10: a 109 11: b 110 12: d 111 13: b 112 14: d 113 15: c 114 16: b 115 [1] "modified data frame" col1 col2 col3 difference 1: d 100 NA NA 2: a 101 NA NA 3: b 102 NA NA 4: a 103 101 2 5: d 104 100 4 6: d 105 104 1 7: c 106 NA NA 8: a 107 103 4 9: b 108 102 6 10: a 109 107 2 11: b 110 108 2 12: d 111 105 6 13: b 112 110 2 14: d 113 111 2 15: c 114 106 8 16: b 115 112 3
Publicación traducida automáticamente
Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA