如何将缺少值的列转换为R中缺少值的二进制值为0?

要将缺少值的列转换为带有0的二进制值(对于缺失值),我们可以将as.integerfunction withcomplete.cases用于数据框列。例如,如果我们有一个名为df的数据框,其中包含具有某些缺失值的列x,则可以使用以下命令将列x转换为二进制,其中缺失值为0-

as.integer(complete.cases(df$x))

例1

考虑以下数据帧-

> x1<-sample(c(NA,2),20,replace=TRUE)
> y1<-rpois(20,5)
> df1<-data.frame(x1,y1)
> df1
输出结果
   x1 y1
1  NA  2
2   2  5
3   2 10
4   2  2
5   2  4
6  NA  7
7  NA  5
8  NA  6
9   2  5
10  2  7
11  2  3
12  2  2
13 NA  2
14  2  5
15 NA  6
16 NA  5
17 NA  5
18  2  5
19  2  4
20  2 10

将x1列转换为0的二进制值以获取缺失值-

> df1$x1<-as.integer(complete.cases(df1$x1))
> df1
输出结果
   x1 y1
1   0  2
2   1  5
3   1 10
4   1  2
5   1  4
6   0  7
7   0  5
8   0  6
9   1  5
10  1  7
11  1  3
12  1  2
13  0  2
14  1  5
15  0  6
16  0  5
17  0  5
18  1  5
19  1  4
20  1 10

例2

> x2<-sample(c(NA,rnorm(2)),20,replace=TRUE)
> y2<-rnorm(20)
> df2<-data.frame(x2,y2)
> df2
输出结果
         x2          y2
1  0.226603  0.25344032
2  0.226603  1.29778682
3  0.545375 -0.66657868
4        NA -1.69272917
5        NA  0.82631979
6  0.545375 -0.12555785
7  0.545375  0.06530913
8  0.545375  0.28359006
9        NA -0.36156762
10 0.226603  0.50943088
11 0.545375 -0.03497627
12 0.545375  1.04488383
13 0.226603  0.55466746
14 0.545375  2.13492023
15       NA  1.18845284
16 0.545375 -0.32171987
17 0.545375 -0.04996223
18 0.226603 -0.41604823
19 0.226603 -1.11003170
20 0.545375  0.34924872

将x2列转换为0的二进制值以获取缺失值-

> df2$x2<-as.integer(complete.cases(df2$x2))
> df2
输出结果
   x2          y2
1   1  0.25344032
2   1  1.29778682
3   1 -0.66657868
4   0 -1.69272917
5   0  0.82631979
6   1 -0.12555785
7   1  0.06530913
8   1  0.28359006
9   0 -0.36156762
10  1  0.50943088
11  1 -0.03497627
12  1  1.04488383
13  1  0.55466746
14  1  2.13492023
15  0  1.18845284
16  1 -0.32171987
17  1 -0.04996223
18  1 -0.41604823
19  1 -1.11003170
20  1  0.34924872