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