如何通过排除R数据帧中的特定文本值来对数据帧进行子集化?
要基于文本值创建子集,我们可以使用rowSums函数,方法是将文本的总和定义为零,这将帮助我们删除包含该特定文本值的所有行。例如,如果我们有一个在许多列中包含A的数据帧df,则可以将除A之外的所有df行选择为-
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 x51 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 x52 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 x55 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 x52 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 x59 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 x51 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
以上是 如何通过排除R数据帧中的特定文本值来对数据帧进行子集化? 的全部内容, 来源链接: utcz.com/z/316547.html