如果我们在R数据框中有一个分组列,并且我们认为其中一个分组值对我们的分析没有用,那么我们可能希望删除所有包含该值的行并继续进行分析,这也许是可能的。重复其中一个值,我们想摆脱它。在这种情况下,我们可以使用否定和单个方括号对数据框进行子集设置。
set.seed(1212) x<-sample(LETTERS[1:3],20,replace=TRUE) y<-rpois(20,5) df<-data.frame(x,y) df
输出结果
x y 1 A 6 2 A 3 3 C 4 4 B 4 5 B 8 6 A 5 7 A 9 8 A 6 9 C 5 10 A 7 11 B 3 12 C 4 13 A 4 14 B 7 15 B 2 16 B 5 17 A 5 18 A 5 19 C 7 20 A 5
删除x列中包含A的行-
df[!df$x=='A',]
输出结果
x y 1 B 7 4 B 4 5 C 7 6 B 2 8 C 5 10 B 7 12 C 3 13 C 6 14 C 5 16 C 4 17 B 5 19 B 7
删除列x中包含B的行-
df[!df$x=='B',]
输出结果
x y 2 A 3 3 A 4 5 C 7 7 A 5 8 C 5 9 A 5 11 A 5 12 C 3 13 C 6 14 C 5 15 A 4 16 C 4 18 A 2 20 A 11
删除列x中包含C的行-
df[!df$x=='C',]
输出结果
x y 1 B 7 2 A 3 3 A 4 4 B 4 6 B 2 7 A 5 9 A 5 10 B 7 11 A 5 15 A 4 17 B 5 18 A 2 19 B 7 20 A 11
删除y列中包含3的行-
df[!df$y==3,]
输出结果
x y 1 B 7 3 A 4 4 B 4 5 C 7 6 B 2 7 A 5 8 C 5 9 A 5 10 B 7 11 A 5 13 C 6 14 C 5 15 A 4 16 C 4 17 B 5 18 A 2 19 B 7 20 A 11
删除在y列中包含7的行-
df[!df$y==7,]
输出结果
x y 2 A 3 3 A 4 4 B 4 6 B 2 7 A 5 8 C 5 9 A 5 11 A 5 12 C 3 13 C 6 14 C 5 15 A 4 16 C 4 17 B 5 18 A 2 20 A 11
删除y列中包含5的行-
df[!df$y==5,]
输出结果
x y 1 B 7 2 A 3 3 A 4 4 B 4 5 C 7 6 B 2 10 B 7 12 C 3 13 C 6 15 A 4 16 C 4 18 A 2 19 B 7 20 A 11