如何通过排除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 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

以上是 如何通过排除R数据帧中的特定文本值来对数据帧进行子集化? 的全部内容, 来源链接: utcz.com/z/316547.html

回到顶部