如何在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
输出
执行上述脚本后,将生成以下输出(由于随机化,此输出可能因您的系统而异):
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
广告