根據條件查詢 R 資料框中的列名和行名。


要根據條件查詢 R 資料框中的列名和行名,我們可以使用 row.names 和 colnames 函式。我們想要查詢行名和列名的條件可以在這些函式內部定義,如下面的示例所示。

示例 1

以下程式碼片段建立一個示例資料框 -

x1<-rpois(20,1)
x2<-rpois(20,8)
x3<-rpois(20,20)
df1<-data.frame(x1,x2,x3)
df1

建立了以下資料框

  x1 x2 x3
1  1 11 15
2  3  6 15
3  0  9 18
4  2 10 26
5  1  9 17
6  1  7 23
7  0 11 21
8  2 11 23
9  1  6 22
10 2  6 28
11 2  7 22
12 0  8 16
13 1  7 28
14 1  7 25
15 0  6 14
16 0 10 23
17 0 12 16
18 0  8 23
19 2  8 17
20 2  8 21

要在上面建立的資料框中查詢哪一行包含值為 17 的值,請將以下程式碼新增到上述程式碼片段中 -

x1<-rpois(20,1)
x2<-rpois(20,8)
x3<-rpois(20,20)
df1<-data.frame(x1,x2,x3)
row.names(df1[which(df1==17,arr.ind=T)[,1],] )

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出 -

[1] "5" "19"

要在上面建立的資料框中查詢哪一列包含值為 17 的值,請將以下程式碼新增到上述程式碼片段中 -

x1<-rpois(20,1)
x2<-rpois(20,8)
x3<-rpois(20,20)
df1<-data.frame(x1,x2,x3)
colnames(df1)[apply(df1, 2, function(x) any(x==17))]

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出 -

[1] "x3"

示例 2

以下程式碼片段建立一個示例資料框 -

y1<-sample(1:100,20)
y2<-sample(1:100,20)
y3<-sample(1:100,20)
df2<-data.frame(y1,y2,y3)
df2

建立了以下資料框

   y1 y2 y3
1  75 52 32
2  37  5 46
3  43 31 60
4 100 30 11
5  28 18 79
6  31 80 53
7   8 85 49
8  62 38 56
9  48 82 15
10 97 48 69
11 69 25 40
12 12 92 21
13 77 55 26
14 39 95 63
15 82 61 75
16 98 40 14
17 61 78 22
18 93 63 58
19 10 21 17
20 2 68 83

要在上面建立的資料框中查詢哪一行包含值為 92 的值,請將以下程式碼新增到上述程式碼片段中 -

y1<-sample(1:100,20)
y2<-sample(1:100,20)
y3<-sample(1:100,20)
df2<-data.frame(y1,y2,y3)
row.names(df2[which(df2==92,arr.ind=T)[,1],] )

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出 -

[1] "12"

要在上面建立的資料框中查詢哪一列包含值為 92 的值,請將以下程式碼新增到上述程式碼片段中 -

y1<-sample(1:100,20)
y2<-sample(1:100,20)
y3<-sample(1:100,20)
df2<-data.frame(y1,y2,y3)
colnames(df2)[apply(df2, 2, function(x) any(x==92))]

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出 -

[1] "y2"

更新於: 2021年11月1日

7K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.