如何在 R 中 data.table 对象的每一行中创建第一个非零值的列?
要data.table在 R 中对象的每一行中创建第一个非零值的列,我们可以按照以下步骤操作 -
首先,创建一个data.table具有一些零值的对象。
然后,使用 apply 函数和自定义函数在data.table对象的每一行中找到第一个非零值。
示例
创建data.table对象
让我们创建一个data.table对象,如下所示 -
library(data.table)输出结果v1<-sample(0:5,25,replace=TRUE)
v2<-sample(0:5,25,replace=TRUE)
v3<-sample(0:5,25,replace=TRUE)
DT<-data.table(v1,v2,v3)
DT
执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-
v1 v2 v31: 0 2 4
2: 0 4 1
3: 4 1 2
4: 2 5 0
5: 5 3 4
6: 1 1 5
7: 5 3 0
8: 5 0 1
9: 5 3 4
10: 0 3 2
11: 5 3 2
12: 5 4 4
13: 4 1 2
14: 5 1 2
15: 5 1 5
16: 4 3 1
17: 2 1 5
18: 2 4 2
19: 4 0 0
20: 3 1 2
21: 0 4 5
22: 5 0 0
23: 5 2 5
24: 5 1 1
25: 1 5 5
v1 v2 v3
在data.table对象的每一行中找到第一个非零
使用 apply 函数和自定义函数在data.table对象 DT 的每一行中查找第一个非零值,如下所示 -
library(data.table)输出结果v1<-sample(0:5,25,replace=TRUE)
v2<-sample(0:5,25,replace=TRUE)
v3<-sample(0:5,25,replace=TRUE)
DT<-data.table(v1,v2,v3)
DT$First_Non_zero<-apply(DT,1, function(x) x[x !=0][1])
DT
v1 v2 v3 First_Non_zero1: 0 2 4 2
2: 0 4 1 4
3: 4 1 2 4
4: 2 5 0 2
5: 5 3 4 5
6: 1 1 5 1
7: 5 3 0 5
8: 5 0 1 5
9: 5 3 4 5
10: 0 3 2 3
11: 5 3 2 5
12: 5 4 4 5
13: 4 1 2 4
14: 5 1 2 5
15: 5 1 5 5
16: 4 3 1 4
17: 2 1 5 2
18: 2 4 2 2
19: 4 0 0 4
20: 3 1 2 3
21: 0 4 5 4
22: 5 0 0 5
23: 5 2 5 5
24: 5 1 1 5
25: 1 5 5 1
v1 v2 v3 First_Non_zero
以上是 如何在 R 中 data.table 对象的每一行中创建第一个非零值的列? 的全部内容, 来源链接: utcz.com/z/322643.html