如何在R数据框中基于列的字符串值和OR条件筛选子集?
我们可能需要使用特定列的一个或多个值来创建R数据框的子集。例如,假设我们有一个包含C1、C2、C3、C4和C5列的数据框df,并且这些列中的每个都包含从A到Z的值。如果我们想使用C1列中的值A或B来选择行,则可以这样操作:df[df$C1=="A"|df$C1=="B",].
考虑下面的数据框:
示例
set.seed(99) x1<-rep(c("A","B","C"),times=c(8,7,5)) x2<-sample(1:9,20,replace=TRUE) df1<data.frame(x1,x2) df1
输出
x1 x2 1 A 1 2 A 6 3 A 6 4 A 5 5 A 3 6 A 2 7 A 6 8 A 4 9 B 4 10 B 4 11 B 9 12 B 2 13 B 8 14 B 6 15 B 4 16 C 4 17 C 1 18 C 7 19 C 2 20 C 7
基于包含A或C的x1列的行进行子集筛选:
示例
df1[df1$x1=="A"|df1$x1=="C",]
输出
x1 x2 1 A 1 2 A 6 3 A 6 4 A 5 5 A 3 6 A 2 7 A 6 8 A 4 16 C 4 17 C 1 18 C 7 19 C 2 20 C 7
基于包含B或C的x1列的行进行子集筛选:
示例
df1[df1$x1=="B"|df1$x1=="C",]
输出
x1 x2 9 B 4 10 B 4 11 B 9 12 B 2 13 B 8 14 B 6 15 B 4 16 C 4 17 C 1 18 C 7 19 C 2 20 C 7
基于包含A或B的x1列的行进行子集筛选:
示例
df1[df1$x1=="A"|df1$x1=="B",]
输出
x1 x2 1 A 1 2 A 6 3 A 6 4 A 5 5 A 3 6 A 2 7 A 6 8 A 4 9 B 4 10 B 4 11 B 9 12 B 2 13 B 8 14 B 6 15 B 4
让我们来看另一个例子:
示例
Party<-sample(c("Democratic","Republican","Reform","Libertarian"),20,replace=TRUE) Rate_Per<-sample(1:100,20,replace=TRUE) df2<-data.frame(Party,Rate_Per) df2
输出
Party Rate_Per 1 Libertarian 45 2 Republican 79 3 Democratic 23 4 Reform 55 5 Republican 37 6 Reform 70 7 Reform 64 8 Republican 62 9 Reform 84 10 Republican 18 11 Libertarian 4 12 Republican 74 13 Reform 11 14 Libertarian 49 15 Democratic 39 16 Libertarian 76 17 Democratic 5 18 Libertarian 81 19 Democratic 1 20 Republican 56
基于包含共和党或民主党的Party列的行进行子集筛选:
示例
df2[df2$Party=="Republican"|df2$Party=="Democratic",]
输出
Party Rate_Per 1 Republican 38 2 Republican 79 4 Democratic 85 7 Republican 29 8 Republican 45 9 Democratic 12 10 Republican 73 13 Republican 38 15 Democratic 40 16 Republican 35 19 Republican 50
广告