Desplace una columna de listas en data.table por grupo en R

En este artículo, discutiremos cómo cambiar una columna de listas en data.table por un grupo en el lenguaje de programación R.

El subconjunto de la tabla de datos se puede realizar y la nueva columna se puede crear y sus valores se asignan mediante el método de cambio en R. El tipo se puede especificar como «adelanto» o «retraso» dependiendo de la dirección en la que los elementos deben ser movido. El método shift toma como argumento el nombre de la columna para usar los valores. El argumento «por» en este método ilustra por cuántos pasos adelantar o retrasar los datos. 

DT[, col := shift(val, type = ), by = ]

Argumentos: 

  • val – El valor para cambiar
  • tipo – Adelanto/retraso de los valores
  • by – Las posiciones por las cuales realizar el retraso/adelanto 

R

# importing the required libraries
library(data.table)
data_table < - data.table(col1=c(list(letters[4:6]), 
                                 list(letters[2:3]), 
                                 list(c("y"))),
                          colid=c(1, 1, 2))
  
print("Original Data Table")
print(data_table)
  
print("Modified Data Table")
  
# calling the lead method
data_table[, .(col2=shift(.(col1), type="lead")[[1L]]),
           by = colid]

Producción

[1] "Original Data Table" 
    col1 colid 
1: d,e,f     1 
2:   b,c     1 
3:     y     2 
[1] "Modified Data Table" 
   colid col2 
1:     1  b,c 
2:     1   NA 
3:     2   NA

Explicación:  los valores que pertenecen a los marcos de datos se agrupan primero en diferentes segmentos según los valores de colid en el marco de datos. La última instancia de cada valor único de la columna colid se reemplaza por NA y cualquier otra ocurrencia se reemplaza por el sucesor en la misma columna. 

El siguiente fragmento de código ilustra el código donde los elementos están sujetos a la operación de «retraso»: 

R

# importing the required libraries
library(data.table)
data_table < - data.table(col1=c(list(letters[4:6]),
                                 list(letters[2:3]), 
                                 list(c("y"))),
                          colid=c(1, 1, 2))
  
print("Original Data Table")
print(data_table)
  
print("Modified Data Table")
  
# calling the lag method
data_table[, .(col2=shift(.(col1), type="lag")[[1L]]),
           by = colid]

Producción

[1] "Original Data Table" 
    col1 colid 
1: d,e,f     1 
2:   b,c     1 
3:     y     2 
[1] "Modified Data Table" 
   colid  col2 
1:     1    NA 
2:     1 d,e,f 
3:     2    NA

Publicación traducida automáticamente

Artículo escrito por codersgram9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *