如何基于具有OR条件的列的字符串值对R数据帧进行子集化?
我们可能想使用特定列的一个或多个值来创建R数据帧的子集。例如,假设我们有一个数据帧df,其中包含C1,C2,C3,C4和C5列,并且这些列中的每一个都包含从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
基于包含共和党或民主党的党列的子集-
示例
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
热门推荐
10 送给姐姐简短的祝福语
11 最美的留言祝福语简短
12 敏字的祝福语简短
13 2026新年祝福语简短语
14 对别人新年祝福语简短
15 年后祝福语简短走心
16 简短新婚铺被子祝福语
17 给司机老师祝福语简短
18 甄嬛传祝福语简短