如何在 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 a1 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_zero1 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