如何根據分類列中的單個值對 R 資料框進行子集選擇?


要根據分類列中的單個值對 R 資料框進行子集選擇,我們可以按照以下步驟操作:

  • 首先,建立一個數據框。
  • 然後,使用 dplyr 包的 filter 函式根據條件對資料框進行子集選擇。

建立資料框

讓我們建立一個如下所示的資料框:

 即時演示

Class<-sample(c("First","Second","Third","Fourth"),25,replace=TRUE)
x<-sample(1:10,25,replace=TRUE)
y<-sample(1:10,25,replace=TRUE)
z<-sample(1:10,25,replace=TRUE)
df<-data.frame(Class,x,y,z)
df

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出可能因系統而異):

Class x y z
1 Fourth 10 6 7
2 First 10 1 5
3 Third 3 5 9
4 First 2 8 5
5 Third 4 9 9
6 First 2 5 3
7 Second 2 7 7
8 Third 6 4 4
9 First 2 9 3
10 First 10 7 4
11 Fourth 1 9 3
12 First 8 7 8
13 First 7 5 3
14 First 10 4 2
15 First 8 9 2
16 First 9 9 10
17 Third 1 1 10
18 Third 5 9 6
19 First 3 2 9
20 Third 8 5 4
21 Third 9 2 7
22 Second 5 9 3
23 Third 10 3 6
24 First 10 6 9
25 Third 1 10 4

根據分類列條件對資料框進行子集選擇

使用 filter 函式,當 x 大於 5 且 Class 為 First 時,對 df 進行子集選擇:

Class<-sample(c("First","Second","Third","Fourth"),25,replace=TRUE)
x<-sample(1:10,25,replace=TRUE)
y<-sample(1:10,25,replace=TRUE)
z<-sample(1:10,25,replace=TRUE)
df<-data.frame(Class,x,y,z)
library(dplyr)
df %>% group_by(Class) %>% filter(x>5 & Class=="First")

輸出

# A tibble: 8 x 4
# Groups: Class [1]
Class    x      y    z
 <chr> <int> <int> <int>
1 First 10    1    5
2 First 10    7    4
3 First 8     7    8
4 First 7     5    3
5 First 10    4    2
6 First 8     9    2
7 First 9     9    10
8 First 10    6    9

根據分類列條件對資料框進行子集選擇

使用 filter 函式,當 y 大於 5 且 Class 為 First 時,對 df 進行子集選擇:

Class<-sample(c("First","Second","Third","Fourth"),25,replace=TRUE)
x<-sample(1:10,25,replace=TRUE)
y<-sample(1:10,25,replace=TRUE)
z<-sample(1:10,25,replace=TRUE)
df<-data.frame(Class,x,y,z)
library(dplyr)
df %>% group_by(Class) %>% filter(y>5 & Class=="First")

輸出

# A tibble: 7 x 4
# Groups: Class [1]
Class    x     y    z
 <chr> <int> <int> <int>
1 First 2     8    5
2 First 2     9    3
3 First 10    7    4
4 First 8     7    8  
5 First 8     9    2
6 First 9     9    10
7 First 10    6    9

根據分類列條件對資料框進行子集選擇

使用 filter 函式,當 z 大於 5 且 Class 為 First 時,對 df 進行子集選擇:

Class<-sample(c("First","Second","Third","Fourth"),25,replace=TRUE)
x<-sample(1:10,25,replace=TRUE)
y<-sample(1:10,25,replace=TRUE)
z<-sample(1:10,25,replace=TRUE)
df<-data.frame(Class,x,y,z)
library(dplyr)
df %>% group_by(Class) %>% filter(z>5 & Class=="First")

輸出

# A tibble: 4 x 4
# Groups: Class [1]
Class    x    y    z
<chr> <int> <int> <int>
1 First 8    7    8
2 First 9    9    10
3 First 3    2    9
4 First 10   6    9

更新於: 2021 年 8 月 14 日

690 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.