如何在 R 数据框中检测用 0 和 1 定义的二进制列?


如果 R 数据框中的一列只有两个值 0 和 1,那么我们称之为二进制列,但二进制列不一定要仅用 0 和 1 定义,这只是一个普遍的约定。为了检测 R 数据框中用 0 和 1 定义的二进制列,我们可以使用 apply 函数,如下例所示。

示例

考虑以下数据框 -

 在线演示

x1<-sample(0:1,20,replace=TRUE)
x2<-rnorm(20,1,0.57)
x3<-sample(1:5,20,replace=TRUE)
x4<-rpois(20,5)
x5<-rpois(20,1)
df1<-data.frame(x1,x2,x3,x4,x5)
df1

输出

  x1   x2     x3  x4  x5
1  1 0.6203256 4  4    0
2  1 0.6133840 3  6    0
3  1 2.2600124 2  5    1
4  1 0.9189756 4  0    0
5  0 0.6335537 1  4    2
6  1 0.6631676 2  3    1
7  1 1.2910049 1  3    1
8  1 1.6811408 5  5    1
9  0 0.9246393 5  8    0
10 1 1.7744186 2  5    1
11 0 1.5409120 1  8    0
12 1 0.5852456 2  9    0
13 1 0.6707639 1  2    1
14 1 1.4045163 3  7    3
15 0 1.1463694 5  4    3
16 0 1.4744266 4  3    2
17 1 1.7846723 2  6    0
18 1 1.2694807 2  4    0
19 1 1.2146714 1  6    0
20 0 1.2323528 4  6    0

检测 df1 中哪一列是二进制的 -

示例

apply(df1,2,function(x) {all(x %in% 0:1)})

输出

 x1    x2    x3    x4    x5
TRUE FALSE FALSE FALSE FALSE

示例

 在线演示

y1<-rnorm(20)
y2<-sample(0:1,20,replace=TRUE)
y3<-sample(0:1,20,replace=TRUE)
y4<-sample(0:1,20,replace=TRUE)
y5<-rexp(20,1.38)
df2<-data.frame(y1,y2,y3,y4,y5)
df2

输出

      y1     y2 y3 y4    y5
1 -0.41990195 1 1   0 0.17901907
2 -0.82665045 0 0   0 0.61638486
3 0.30680950  0 1    1 0.46992402
4 1.00525636 1  0    0 0.30043897
5 0.88557771 0  1    1 0.30998419
6 0.36112442 0  1    1 0.48023858
7 -1.13961239 1 1   1 1.12290153
8 -0.27722960 1 0   0 0.61928866
9 -0.42098660 0 0   1 0.12449119
10 0.17711381 0 0   0 0.07402737
11 -0.37249602 0 1  1 2.71841887
12 1.16715519 0 0   0 0.43469615
13 1.14925253 0 1   0 1.78815398
14 0.35758175 1 1   1 2.73568363
15 0.42990962 0 1   1 2.08840339
16 -0.57891804 1 1  1 1.45000159
17 -0.84741815 1 0  0 0.33356979
18 0.97735362 0 1   1 0.19783634
19 0.92523768 1 0   1 0.14692741
20 -0.07879863 0 0  0 0.49631861

检测 df1 中哪一列是二进制的 -

示例

apply(df2,2,function(x) {all(x %in% 0:1)})

输出

  y1    y2    y3   y4   y5
FALSE TRUE TRUE TRUE FALSE

更新于: 2020-12-05

810 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告