如何在 R 数据框的每一行中创建第一个非零值的列?

要在 R 数据帧的每一行中创建一列第一个非零值,我们可以按照以下步骤操作 -

  • 首先,创建一个具有一些零值的数据框。

  • 然后,使用 apply 函数和自定义函数在数据帧的每一行中找到第一个非零值。

示例

创建数据框

让我们创建一个数据框,如下所示 -

x<-sample(0:2,25,replace=TRUE)

y<-sample(0:2,25,replace=TRUE)

z<-sample(0:2,25,replace=TRUE)

a<-sample(0:2,25,replace=TRUE)

df<-data.frame(x,y,z,a)

df

输出结果

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

   x y z a

1  1 0 2 0

2  1 0 0 1

3  0 0 1 0

4  2 0 0 2

5  0 1 1 2

6  0 1 0 1

7  2 1 2 2

8  0 1 1 2

9  1 0 0 2

10 1 0 1 0

11 1 0 0 0

12 0 2 1 0

13 0 0 1 2

14 1 1 0 1

15 1 0 2 1

16 1 1 1 1

17 1 1 1 1

18 2 0 2 1

19 1 0 2 0

20 0 2 2 0

21 0 0 2 2

22 1 0 2 0

23 0 2 1 0

24 1 1 1 0

25 1 0 2 0

在数据帧的每一行中找到第一个非零

使用 apply 函数和自定义函数在数据框 df 的每一行中查找第一个非零值,如下所示 -

x<-sample(0:2,25,replace=TRUE)

y<-sample(0:2,25,replace=TRUE)

z<-sample(0:2,25,replace=TRUE)

a<-sample(0:2,25,replace=TRUE)

df<-data.frame(x,y,z,a)

df$First_Non_zero<-apply(df,1, function(x) x[x !=0][1])

df

输出结果
   x y z a First_Non_zero

1  1 2 1 0 1

2  0 2 2 2 2

3  0 0 2 1 2

4  0 2 1 1 2

5  2 0 0 1 2

6  2 1 0 2 2

7  1 2 1 1 1

8  1 1 0 1 1

9  1 2 2 0 1

10 2 0 1 0 2

11 2 1 1 1 2

12 0 0 0 1 1

13 2 2 1 1 2

14 0 1 1 1 1

15 1 1 1 1 1

16 2 1 0 1 2

17 1 0 1 0 1

18 1 2 1 1 1

19 0 2 1 1 2

20 0 1 1 2 1

21 0 1 2 0 1

22 1 0 2 0 1

23 1 1 1 0 1

24 0 0 2 0 2

25 2 2 1 2 2

以上是 如何在 R 数据框的每一行中创建第一个非零值的列? 的全部内容, 来源链接: utcz.com/z/353549.html

回到顶部