如何在 R 数据框中通过排除特定文本值来对数据框进行子集化?
r programmingserver side programmingprogramming更新于 2025/6/25 7:37:17
要基于文本值创建子集,我们可以使用 rowSums 函数,将文本的总和定义为零,这将帮助我们删除所有包含该特定文本值的行。例如,如果我们有一个数据框 df,其中许多列包含 A,那么 df 中所有不包括 A 的行都可以被选为负数。
df[rowSums(df=="A")==0,,drop=FALSE]
示例
考虑以下数据框 −
set.seed(951) x1<−sample(LETTERS[1:3],20,replace=TRUE) x2<−sample(LETTERS[1:4],20,replace=TRUE) x3<−sample(LETTERS[1:5],20,replace=TRUE) x4<−sample(LETTERS[2:5],20,replace=TRUE) x5<−sample(LETTERS[3:5],20,replace=TRUE) df<−data.frame(x1,x2,x3,x4,x5) df
输出
x1 x2 x3 x4 x5 1 A D B C C 2 B D D D D 3 B A D D D 4 B D C D E 5 C D C C C 6 A D C D E 7 B D E B E 8 A D E D C 9 A B C E E 10 C B C B C 11 A D D B D 12 B C B D E 13 A C E E D 14 C A D C E 15 C C D B D 16 A C A D E 17 C A B C E 18 A A E E D 19 B A D D C 20 B D C D C
对不包含 A 的行进行子集设置 −
df[rowSums(df=="A")==0,,drop=FALSE]
输出
x1 x2 x3 x4 x5 2 B D D D D 4 B D C D E 5 C D C C C 7 B D E B E 10 C B C B C 12 B C B D E 15 C C D B D 20 B D C D C
对不包含 B 的行进行子集设置 −
df[rowSums(df=="B")==0,,drop=FALSE]
输出
x1 x2 x3 x4 x5 5 C D C C C 6 A D C D E 8 A D E D C 13 A C E E D 14 C A D C E 16 A C A D E 18 A A E E D
对不包含 C 的行进行子集设置
df[rowSums(df=="C")==0,,drop=FALSE]
输出
x1 x2 x3 x4 x5 2 B D D D D 3 B A D D D 7 B D E B E 11 A D D B D 18 A A E E D
对不包含 D 的行进行子集设置 −
df[rowSums(df=="D")==0,,drop=FALSE]
输出
x1 x2 x3 x4 x5 9 A B C E E 10 C B C B C 17 C A B C E
对不包含 E 的行进行子集设置 −
df[rowSums(df=="E")==0,,drop=FALSE]
输出
x1 x2 x3 x4 x5 1 A D B C C 2 B D D D D 3 B A D D D 5 C D C C C 10 C B C B C 11 A D D B D 15 C C D B D 19 B A D D C 20 B D C D C