如何根据分类列中的单个值对 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP