如何在 R 中通过排除缺失值来合并列?
如果我们有一个数据集,其中每列的交替位置包含缺失值,那么我们可能希望通过排除这些缺失值来合并列,这将减少数据集,并且分析可能会变得更容易。
为此,我们可以使用 na.exclude 函数以及 apply 函数,如下面的示例所示。
示例 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 x3 1 NA 1 10 2 NA 1 10 3 NA 1 10 4 NA 1 10 5 NA 1 10 6 2 3 NA 7 2 3 NA 8 2 3 NA 9 2 3 NA 10 2 3 NA 11 2 5 NA 12 2 5 NA 13 2 5 NA 14 2 5 NA 15 2 5 NA 16 10 NA 3 17 10 NA 3 18 10 NA 3 19 10 NA 3 20 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 y3 1 NA 0.1152603 -0.9838989 2 NA 0.1152603 -0.9838989 3 NA 0.1152603 -0.9838989 4 NA 0.1152603 -0.9838989 5 NA 0.1152603 -0.9838989 6 -0.74142593 0.1152603 NA 7 -0.74142593 0.1152603 NA 8 -1.88274271 0.1152603 NA 9 -1.88274271 0.1152603 NA 10 -1.88274271 0.1152603 NA 11 -0.09684216 -1.2886519 NA 12 -0.09684216 -1.2886519 NA 13 -0.09684216 -1.2886519 NA 14 -0.08528031 -1.2886519 NA 15 -0.08528031 -1.2886519 NA 16 -0.08528031 NA 0.1967864 17 -0.80126932 NA 0.1967864 18 -0.80126932 NA 0.1967864 19 -0.80126932 NA 0.1967864 20 -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
广告