在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