如何根據與模式匹配的 R 資料框的特定列值提取列?


R 資料框的列值可以透過使用單個方括號進行子集化輕鬆提取,但如果我們想要提取與模式匹配的列值,則需要在單個方括號內使用 grepl 函式,這將幫助我們匹配資料框列中值的模式。

示例

考慮以下資料框

線上演示

> set.seed(271)
> x1<-sample(c("A187","A321","A123","A242"),20,replace=TRUE)
> x2<-sample(c("B87","B74","B81","B71"),20,replace=TRUE)
> df1<-data.frame(x1,x2)
> df1

輸出

    x1 x2
1  A242 B71
2  A123 B71
3  A242 B81
4  A242 B87
5  A123 B71
6  A321 B71
7  A187 B74
8  A321 B74
9  A123 B71
10 A242 B74
11 A321 B74
12 A187 B87
13 A321 B74
14 A321 B74
15 A123 B74
16 A187 B87
17 A123 B81
18 A242 B87
19 A242 B71
20 A187 B74

提取以 A1 開頭的值

示例

> df1[grepl("A1",x1),]

輸出

x1 x2
2 A123 B71
5 A123 B71
7 A187 B74
9 A123 B71
12 A187 B87
15 A123 B74
16 A187 B87
17 A123 B81
20 A187 B74

提取以 A2 開頭的值

示例

> df1[grepl("A2",x1),]

輸出

    x1  x2
1  A242 B71
3  A242 B81
4  A242 B87
10 A242 B74
18 A242 B87
19 A242 B71

提取以 A3 開頭的值

示例

> df1[grepl("A3",x1),]

輸出

    x1  x2
6  A321 B71
8  A321 B74
11 A321 B74
13 A321 B74
14 A321 B74

提取以 B7 開頭的值

示例

> df1[grepl("B7",x2),]

輸出

    x1   x2
1  A242 B71
2  A123 B71
5  A123 B71
6  A321 B71
7  A187 B74
8  A321 B74
9  A123 B71
10 A242 B74
11 A321 B74
13 A321 B74
14 A321 B74
15 A123 B74
19 A242 B71
20 A187 B74

提取以 B8 開頭的值

示例

> df1[grepl("B8",x2),]

輸出

    x1 x2
3  A242 B81
4  A242 B87
12 A187 B87
16 A187 B87
17 A123 B81
18 A242 B87

讓我們看看另一個例子

示例

線上演示

> y1<-sample(c("ID1","ID2","ID3","ID4"),20,replace=TRUE)
> y2<-sample(c("C1","C2"),20,replace=TRUE)
> df2<-data.frame(y1,y2)
> df2

輸出

   y1 y2
1  ID1 C1
2  ID3 C1
3  ID1 C1
4  ID2 C2
5  ID4 C2
6  ID2 C2
7  ID2 C1
8  ID3 C1
9  ID1 C1
10 ID1 C1
11 ID2 C2
12 ID2 C2
13 ID4 C1
14 ID3 C2
15 ID2 C1
16 ID4 C1
17 ID4 C1
18 ID2 C2
19 ID2 C2
20 ID3 C2

示例

> df2[grepl("ID1",y1),]

輸出

    y1 y2
1  ID1 C1
3  ID1 C1
9  ID1 C1
10 ID1 C1

示例

> df2[grepl("ID2",y1),]

輸出

   y1 y2
4  ID2 C2
6  ID2 C2
7  ID2 C1
11 ID2 C2
12 ID2 C2
15 ID2 C1
18 ID2 C2
19 ID2 C2

示例

> df2[grepl("ID3",y1),]

輸出

   y1  y2
2  ID3 C1
8  ID3 C1
14 ID3 C2
20 ID3 C2

示例

> df2[grepl("ID4",y1),]

輸出

    y1 y2
5  ID4 C2
13 ID4 C1
16 ID4 C1
17 ID4 C1

示例

> df2[grepl("C1",y2),]

輸出

    y1 y2
1  ID1 C1
2  ID3 C1
3  ID1 C1
7  ID2 C1
8  ID3 C1
9  ID1 C1
10 ID1 C1
13 ID4 C1
15 ID2 C1
16 ID4 C1
17 ID4 C1

示例

> df2[grepl("C2",y2),]

輸出

    y1 y2
4  ID2 C2
5  ID4 C2
6  ID2 C2
11 ID2 C2
12 ID2 C2
14 ID3 C2
18 ID2 C2
19 ID2 C2
20 ID3 C2

更新於: 2020-11-21

418 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.