如何在R中根据向量值对数据框进行子集选择?


如果我们有一个向量和一个数据框,并且数据框有一列包含与向量中类似的值,那么我们可以根据该向量创建一个数据框的子集。这可以通过使用单方括号和 %in% 运算符来实现。%in% 运算符将帮助我们找到数据框列中与向量值匹配的值。查看下面的示例以了解其工作原理。

示例1

考虑下面的数据框 df1 和向量 v1:

在线演示

> x1<-rpois(20,2)
> x2<-rnorm(20)
> df1<-data.frame(x1,x2)
> df1

输出

x1 x2
1 2 -1.0627997
2 4 -0.2159125
3 1 0.2443734
4 3 -1.3513780
5 3 1.7359994
6 1 1.2563915
7 1 -0.8998470
8 2 0.4187820
9 1 2.6305826
10 4 -0.8040052
11 4 0.4067659
12 3 -1.7879203
13 3 1.7214544
14 2 -0.4699642
15 2 0.3626548
16 4 1.3013632
17 2 -0.2983836
18 1 1.8943313
19 1 1.5637219
20 2 0.8786897

根据向量 v1 中的值对数据框 df1 进行子集选择:

> df1[df1$x1 %in% v1,]

输出

x1 x2
1 2 -1.0627997
3 1 0.2443734
4 3 -1.3513780
5 3 1.7359994
6 1 1.2563915
7 1 -0.8998470
8 2 0.4187820
9 1 2.6305826
12 3 -1.7879203
13 3 1.7214544
14 2 -0.4699642
15 2 0.3626548
17 2 -0.2983836
18 1 1.8943313
19 1 1.5637219
20 2 0.8786897

示例2

在线演示

> y1<-sample(LETTERS[1:5],20,replace=TRUE)
> y2<-rpois(20,2)
> y3<-rpois(20,5)
> df2<-data.frame(y1,y2,y3)
> df2

输出

y1 y2 y3
1 C 0 5
2 A 2 5
3 A 2 1
4 D 1 6
5 B 0 4
6 E 6 9
7 E 0 5
8 C 1 9
9 D 1 6
10 D 2 6
11 A 4 5
12 D 1 6
13 E 1 5
14 E 2 6
15 C 5 4
16 A 0 3
17 D 2 5
18 B 1 10
19 E 3 3
20 A 2 1

根据向量 v2 中的值对数据框 df2 进行子集选择:

> v2<-c("A","B","C","D")
> df2[df2$y1 %in% v2,]

输出

y1 y2 y3
1 C 0 5
2 A 2 5
3 A 2 1
4 D 1 6
5 B 0 4
8 C 1 9
9 D 1 6
10 D 2 6
11 A 4 5
12 D 1 6
15 C 5 4
16 A 0 3
17 D 2 5
18 B 1 10
20 A 2 1

更新于:2021年3月4日

4K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告