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