如何在 R 中使用具有多個匹配項的字元列建立子集?


子集是資料分析中最重要的方面之一。這種情況之一可能是基於多個值對字元列進行子集化處理。例如,如果 R 資料幀的字元列有 5 個類別,那麼我們可能只需要提取 2、3 或 4 個值,然後就可以使用 stringr 包的 str_detect 函式與 dplyr 包的 filter 函式來執行此類操作。

考慮以下資料幀−

示例

 線上演示

Group<-sample(LETTERS[1:6],25,replace=TRUE)
Response<-rnorm(25,3,0.24)
df1<-data.frame(Group,Response)
df1

輸出

   Group Response
1  A    3.040870
2  F    2.921251
3  E    2.911820
4  E    3.188297
5  B    3.054424
6  D    2.691892
7  F    2.714302
8  F    3.154340
9  F    3.058324
10 C    2.814400
11 B    3.040255
12 D    3.270639
13 A    3.197537
14 E    2.646717
15 D    2.671441
16 C    3.233093
17 F    2.555055
18 E    2.670018
19 E    2.607526
20 F    2.952952
21 C    3.257484
22 B    3.009312
23 C    3.142553
24 B    3.355754
25 B    3.262376

載入 dplyr 和 stringr 包,並針對 Group 中的 A、C 和 D 值對 df1 過濾−

示例

library(dplyr)
library(stringr)
df1%>%filter(str_detect(Group,"A|C|D"))

輸出

  Group  Response
1   A   3.040870
2   D   2.691892
3   C   2.814400
4   D   3.270639
5   A   3.197537
6   D   2.671441
7   C   3.233093
8   C   3.257484
9   C   3.142553

示例

 線上演示

Region<-sample(c("Asia","Oceania","Africa","America"),25,replace=TRUE)
Y<-rpois(25,5)
df2<-data.frame(Region,Y)
df2

輸出

   Region   Y
1  Africa   5
2  Oceania  4
3  Oceania  3
4  Oceania  3
5  Oceania  6
6  Oceania  2
7  Oceania  4
8  Oceania  6
9  Asia     1
10 Africa   4
11 Asia     7
12 Asia     10
13 Oceania  1
14 America  5
15 Oceania  3
16 Africa   8
17 Oceania  9
18 Asia     11
19 Africa   7
20 Africa   3
21 Africa   2
22 Asia     5
23 America  6
24 America  2
25 America  1

針對 Region 中的 Oceania、America 和 Africa 值對 df2 過濾−

示例

df2%>%filter(str_detect(Region,"Oceania|America|Africa"))

輸出

    Region   Y
1  Africa    5
2  Oceania   4
3  Oceania   3
4  Oceania   3
5  Oceania   6
6  Oceania   2
7  Oceania   4
8  Oceania   6
9  Africa    4
10 Oceania   1
11 America   5
12 Oceania   3
13 Africa    8
14 Oceania   9
15 Africa    7
16 Africa    3
17 Africa    2
18 America   6
19 America   2
20 America   1

更新於: 2021 年 2 月 11 日

606 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告