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