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

更新於:2021年11月12日

595 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告