R语言 通过分组转移data.table中的一列列表

R语言 通过分组转移data.table中的一列列表

在这篇文章中,我们将讨论如何在R编程语言中通过一个组来转移data.table中的列表列。

数据表的子集可以被执行,新的列可以被创建,它的值可以用R语言中的shift方法来分配。类型可以被指定为 “领先 “或 “滞后”,取决于元素被移动的方向。shift方法把要使用的列名作为一个参数。这个方法中的 “by “参数说明了要以多少步来引导或滞后数据。

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

参数:

  • val – 要转移的值
  • type – 引导/滞后的值
  • by – 执行滞后/引导的位置
# 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]

输出

[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,其他每个实例被同一列的后续值替换。

下面的代码片段说明了对元素进行 “滞后 “操作的代码。

# 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程