如何通过排除 R 中的缺失值来组合列?
如果我们的数据集在每一列的替代位置包含缺失值,那么我们可能希望通过排除这些缺失值来组合列,这将减少数据集并且分析可能会变得更容易。
为此,我们可以将na.exclude函数与应用函数一起使用,如下面的示例所示。
示例 1
以下代码段创建了一个示例数据框 -
x1<-rep(c(NA,2,10),times=c(5,10,5)) x2<-rep(c(1,3,5,NA),times=c(5,5,5,5)) x3<-rep(c(10,NA,3),times=c(5,10,5)) df1<-data.frame(x1,x2,x3) df1
创建以下数据框 -
x1 x2 x31 NA 1 102 NA 1 103 NA 1 104 NA 1 105 NA 1 106 2 3 NA7 2 3 NA8 2 3 NA9 2 3 NA10 2 3 NA11 2 5 NA12 2 5 NA13 2 5 NA14 2 5 NA15 2 5 NA16 10 NA 317 10 NA 318 10 NA 319 10 NA 320 10 NA 3
要从 df1 中排除 NA 并合并列,请将以下代码添加到上面的代码段中 -
x1<-rep(c(NA,2,10),times=c(5,10,5)) x2<-rep(c(1,3,5,NA),times=c(5,5,5,5)) x3<-rep(c(10,NA,3),times=c(5,10,5)) df1<-data.frame(x1,x2,x3) t(apply(df1,1,na.exclude))
输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
[,1][,2] [1,] 1 10[2,] 1 10[3,] 1 10[4,] 1 10[5,] 1 10[6,] 2 3[7,] 2 3[8,] 2 3[9,] 2 3[10,] 2 3[11,] 2 5[12,] 2 5[13,] 2 5[14,] 2 5[15,] 2 5[16,] 10 3[17,] 10 3[18,] 10 3[19,] 10 3[20,] 10 3
示例 2
以下代码段创建了一个示例数据框 -
y1<-rep(c(NA,rnorm(5)),times=c(5,2,3,3,3,4)) y2<-rep(c(rnorm(2),NA),times=c(10,5,5)) y3<-rep(c(rnorm(1),NA,rnorm(1)),times=c(5,10,5)) df2<-data.frame(y1,y2,y3) df2
创建以下数据框 -
y1 y2 y31 NA 0.1152603 -0.98389892 NA 0.1152603 -0.98389893 NA 0.1152603 -0.98389894 NA 0.1152603 -0.98389895 NA 0.1152603 -0.98389896 -0.74142593 0.1152603 NA7 -0.74142593 0.1152603 NA8 -1.88274271 0.1152603 NA9 -1.88274271 0.1152603 NA10 -1.88274271 0.1152603 NA11 -0.09684216 -1.2886519 NA12 -0.09684216 -1.2886519 NA13 -0.09684216 -1.2886519 NA14 -0.08528031 -1.2886519 NA15 -0.08528031 -1.2886519 NA16 -0.08528031 NA 0.196786417 -0.80126932 NA 0.196786418 -0.80126932 NA 0.196786419 -0.80126932 NA 0.196786420 -0.80126932 NA 0.1967864
要从 df2 中排除 NA 并合并列,请将以下代码添加到上述代码段中 -
y1<-rep(c(NA,rnorm(5)),times=c(5,2,3,3,3,4)) y2<-rep(c(rnorm(2),NA),times=c(10,5,5)) y3<-rep(c(rnorm(1),NA,rnorm(1)),times=c(5,10,5)) df2<-data.frame(y1,y2,y3) t(apply(df2,1,na.exclude))
输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
[,1] [,2] [1,] 0.11526026 -0.9838989[2,] 0.11526026 -0.9838989[3,] 0.11526026 -0.9838989[4,] 0.11526026 -0.9838989[5,] 0.11526026 -0.9838989[6,] -0.74142593 0.1152603[7,] -0.74142593 0.1152603[8,] -1.88274271 0.1152603[9,] -1.88274271 0.1152603[10,] -1.88274271 0.1152603[11,] -0.09684216 -1.2886519[12,] -0.09684216 -1.2886519[13,] -0.09684216 -1.2886519[14,] -0.08528031 -1.2886519[15,] -0.08528031 -1.2886519[16,] -0.08528031 0.1967864[17,] -0.80126932 0.1967864[18,] -0.80126932 0.1967864[19,] -0.80126932 0.1967864[20,] -0.80126932 0.1967864