如何在R資料框中根據字串匹配查詢字串列的列號?


資料框可能很長,並且包含僅包含字串值的列以及數值列。在進行分析時,我們可能需要檢查哪些列包含特定字串值。例如,如果我們有一列字串值為 A、B 和 C,並且我們想要檢查哪個列包含值“A”,則可以使用 apply 函式,如下例所示。

示例

考慮以下資料框:

 線上演示

x1<-sample(LETTERS[1:4],20,replace=TRUE)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
df1

輸出

  x1 x2
1  A 3
2  B 1
3  B 2
4  A 2
5  D 3
6  C 2
7  A 3
8  B 1
9  D 3
10 A 1
11 B 0
12 A 2
13 D 2
14 B 0
15 B 3
16 B 1
17 D 4
18 C 1
19 B 4
20 B 1

檢查存在 A 的列:

示例

sapply(df1, function(x) any(x=="A"))

輸出

 x1    x2
TRUE FALSE

此處,列 x1 的輸出為 TRUE,因此列 x1 包含 A。

示例

 線上演示

y1<-rnorm(20)
y2<-sample(c("Rooh","Frank","Christina"),20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

輸出

      y1       y2
1 -1.05746268 Christina
2 -0.46353464 Rooh
3 -0.30686060 Rooh
4 0.22968835 Christina
5 0.36001582 Rooh
6 0.21773469 Christina
7 0.52068600 Christina
8 -0.28930238 Christina
9 2.75670872 Rooh
10 -0.70136439 Frank
11 1.49660551 Frank
12 0.02635582 Rooh
13 -2.20396449 Frank
14 0.82857546 Frank
15 0.36148329 Rooh
16 -0.82422499 Frank
17 -0.50081026 Rooh
18 -0.07842975 Christina
19 -1.19349053 Rooh
20 -0.55590686 Frank

檢查存在 Rooh 的列:

示例

sapply(df2, function(x) any(x=="Rooh"))

輸出

  y1   y2
FALSE TRUE

更新於:2020-12-08

339 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告