📜  在R中按组移动data.table中的一列列表

📅  最后修改于: 2022-05-13 01:54:49.950000             🧑  作者: Mango

在R中按组移动data.table中的一列列表

在本文中,我们将讨论如何在 R 编程语言中按组移动 data.table 中的一列列表。

可以执行数据表子集,可以创建新列,并使用 R 中的 shift 方法分配其值。类型可以指定为“超前”或“滞后”,具体取决于元素要移动的方向被移动。 shift 方法将列名作为参数以使用这些值。此方法中的“by”参数说明了领先或落后数据的步骤。

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

论据:

  • val – 要移动的值
  • 类型——领先/落后于价值观
  • by – 执行滞后/领先的位置
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]


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]


输出

[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

说明:属于数据帧的值首先根据数据帧中colid的值分组到不同的段中。 colid 列的每个唯一值的最后一个实例被替换为 NA,并且每隔一个出现的实例被同一列中的后继值替换。

以下代码片段说明了元素受到“滞后”操作的代码:

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]

输出

[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