R语言 使用data.table的前一行
在这篇文章中,我们将使用R编程语言中的基本功能来研究使用data.table的前一行的不同方法。
数据表的子集可以被执行,新的行可以被创建,它们的值可以使用R中的shift方法来分配。类型可以被指定为 “领先 “或 “滞后”,取决于元素被移动的方向。移位方法以列名作为参数,以使用这些值。
语法 :DT[, Row:= shift(val, type = )]
参数
- val – 要转移的值
- type – 引导/滞后的值
方法1:使用shift()函数从data.table中提取以前的行
在这个方法中,使用shift()函数从data.table中提取之前的行,用户需要首先导入并安装data.table包到工作控制台,然后用户需要使用提到的语法和shift函数的调用,在使用data.table进行计算时获得前一行的值,并创建一个新列,在R编程语言中显示相应的值。
在工作控制台中安装和导入data.table库的语法
install.packages("data.table")
library("data.table")
例子
在这个例子中,我们创建了一个有3列5行的数据表,然后我们使用R编程语言中提到的上述方法,在数据表中添加了一列包含变量x的数值,时间为变量y新的前一行的数值。
#import required libraries
library("data.table")
# Create Data table
data <- data.table(x = 1:5,y = 10:6,
z = LETTERS[1:5])
# Use the previous rows
data[ , New := x*shift(y)]
data
输出
x y z New
1: 1 10 A NA
2: 2 9 B 20
3: 3 8 C 27
4: 4 7 D 32
5: 5 6 E 35
方法2:使用shift()函数和类型参数从data.table中提取前N行
在这个方法中,我们创建了一个有3列5行的数据表,然后调用shift函数,将N设置为3,这将使用创建的数据表中的3个前值进行乘法运算,然后用计算得到的值在数据表中添加一个新的列,在这里我们也使用了shift()函数的类型参数,在R编程语言中,该参数将被初始化为lag。
# import required libraries
library("data.table")
# Create Data table
data <- data.table(x = 1:5,y = 10:6,
z = LETTERS[1:5])
# Use the previous rows
data[ , lag3 := x * shift(
y, 3, type = "lag")]
data
输出
x y z lag3
1: 1 10 A NA
2: 2 9 B NA
3: 3 8 C NA
4: 4 7 D 40
5: 5 6 E 45