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