選擇R資料框的列,如果列不存在則跳過。


有時資料框中會有大量的列,我們知道一些列的名稱,但已知的列中有些在資料框中並不存在。現在,如果我們想選擇我們已知的列並跳過不存在的列,則可以使用子集。

例如,如果我們有一個名為df的資料框,它包含20列,我們認為x、y、z存在於df中,但實際上z不存在。現在,可以使用以下命令選擇x、y、z列並跳過z:

df[,names(df) %in% c("x","y","z")]

示例1

考慮以下資料框:

x1<-rnorm(20)
x3<-rnorm(20)
x4<-rnorm(20)
df1<-data.frame(x1,x3,x4)
df1

建立了以下資料框

             x1          x3          x4
1    0.39242697  1.94369518 -0.36692667
2   -2.87236253  0.63008900 -1.06281211
3   -0.65349377 -0.88442286 -0.01778122
4   -1.17954360 -1.12290165  1.22420677
5    0.12765932 -2.47906508 -0.36339964
6    1.00167594  0.98720588  0.26306844
7   -0.45533660 -0.61367430  0.59131906
8    0.10805656  0.70099416 -1.25835396
9    0.41539962 -0.34988934 -1.16621416
10   1.69208586 -0.08883033  0.25785287
11   0.14335867 -1.67958251 -0.45326409
12  -0.69518421 -1.50169655 -0.32216638
13   0.29088005 -1.30874972 -0.28515476
14  -0.01994773  0.19276681 -0.36537207
15  -0.61455895 -0.59203646  0.09349088
16   0.34339425  0.86884825  1.04326014
17   1.71791754  0.88276790  0.66905104
18   2.06755011 -0.64288995 -0.09404691
19  -1.54713973  0.73062146 -2.27962611
20   1.33430182 -1.03840560  0.94347980

要從上面建立的資料框df1中選擇列x1、x2、x3和x4,請將以下程式碼新增到上面的程式碼段中:

x1<-rnorm(20)
x3<-rnorm(20)
x4<-rnorm(20)
df1<-data.frame(x1,x3,x4)
df1[,names(df1) %in% c("x1","x2","x3","x4")]

輸出

如果將以上所有程式碼段作為一個程式執行,則會生成以下輸出:

            x1          x3          x4
1   0.39242697  1.94369518 -0.36692667
2  -2.87236253  0.63008900 -1.06281211
3  -0.65349377 -0.88442286 -0.01778122
4  -1.17954360 -1.12290165  1.22420677
5   0.12765932 -2.47906508 -0.36339964
6   1.00167594  0.98720588  0.26306844
7  -0.45533660 -0.61367430  0.59131906
8   0.10805656  0.70099416 -1.25835396
9   0.41539962 -0.34988934 -1.16621416
10  1.69208586 -0.08883033  0.25785287
11  0.14335867 -1.67958251 -0.45326409
12 -0.69518421 -1.50169655 -0.32216638
13  0.29088005 -1.30874972 -0.28515476
14 -0.01994773  0.19276681 -0.36537207
15 -0.61455895 -0.59203646  0.09349088
16  0.34339425  0.86884825  1.04326014
17  1.71791754  0.88276790  0.66905104
18  2.06755011 -0.64288995 -0.09404691
19 -1.54713973  0.73062146 -2.27962611
20  1.33430182 -1.03840560  0.94347980

示例2

考慮以下給出的資料框:

y1<-rpois(20,5)
y2<-rpois(20,2)
y4<-rpois(20,5)
y6<-rpois(20,2)
df2<-data.frame(y1,y2,y4,y6)
df2

建立了以下資料框

  y1 y2 y4 y6
1  4  3  5  2
2  4  2  4  3
3  4  0  9  3
4  3  5  6  1
5  4  2  3  3
6  7  1  8  0
7  7  3  4  2
8  5  2  8  1
9  3  4  8  1
10 4  2 10  1
11 3  2  4  1
12 5  1  5  2
13 3  2  8  2
14 4  2  9  0
15 5  0  2  3
16 4  0  6  1
17 5  2  7  1
18 6  0  6  2
19 5  2  5  2
20 6  1  4  1

要從上面建立的資料框df2中選擇列y1、y2、y3、y4、y5和y6,請將以下程式碼新增到上面的程式碼段中:

y1<-rpois(20,5)
y2<-rpois(20,2)
y4<-rpois(20,5)
y6<-rpois(20,2)
df2<-data.frame(y1,y2,y4,y6)
df2[,names(df2) %in% c("y1","y2","y3","y4","y5","y6")]

輸出

如果將以上所有程式碼段作為一個程式執行,則會生成以下輸出:

  y1 y2 y4 y6
1  4  3  5  2
2  4  2  4  3
3  4  0  9  3
4  3  5  6  1
5  4  2  3  3
6  7  1  8  0
7  7  3  4  2
8  5  2  8  1
9  3  4  8  1
10 4  2 10  1
11 3  2  4  1
12 5  1  5  2
13 3  2  8  2
14 4  2  9  0
15 5  0  2  3
16 4  0  6  1
17 5  2  7  1
18 6  0  6  2
19 5  2  5  2
20 6  1  4  1

更新於:2021年10月28日

633 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.