如何在 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 v3

1:  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_zero

1:  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

回到顶部