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

r programmingserver side programmingprogramming更新于 2025/6/25 10:37:17

如果 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

相关文章