如何根据特定列的分组值从R中的数据框中删除行?

如果我们在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