阅读 143

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


文章分类
百科问答
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐