如果 R 数据框中有一列存在缺失值,则忽略该值,从而合并两列。

r programmingserver side programmingprogramming

要通过忽略 R 数据框中有一列存在缺失值,从而合并两列,我们可以使用 paste 函数和 is.na 函数。

例如,如果我们有一个名为 df 的数据框,其中包含两列,即 C1 和 C2,其中 C2 包含一些缺失值,那么我们可以使用下面提到的命令通过忽略 C2 中的缺失值合并 C1 和 C2 −

cbind(df,Combined=paste(df[,1],replace(df[,2],is.na(df[,2]),"")))

示例 1

以下代码片段创建了一个示例数据框 −

x1<-rpois(20,5)
y1<-sample(c(NA,2,5),20,replace=TRUE)
df1<-data.frame(x1,y1)
df1

创建以下数据框

  x1 y1
 1 3 2
 2 7 2
 3 6 5
 4 9 5
 5 6 NA
 6 2 2
 7 3 NA
 8 5 2
 9 6 5
10 7 5
11 6 NA
12 2 5
13 2 2
14 7 5
15 6 5
16 7 2
17 7 NA
18 3 NA
19 4 5
20 6 5

要合并上面创建的数据框中的 x1 和 y1 值,请将以下代码添加到上面的代码片段中 −

x1<-rpois(20,5)
y1<-sample(c(NA,2,5),20,replace=TRUE)
df1<-data.frame(x1,y1)
cbind(df1,Combined=paste(df1[,1],replace(df1[,2],is.na(df1[,2]),"")))

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

  x1 y1 Combined
 1 3 2   3 2
 2 7 2   7 2
 3 6 5   6 5
 4 9 5   9 5
 5 6 NA   6
 6 2 2   2 2
 7 3 NA   3
 8 5 2   5 2
 9 6 5   6 5
10 7 5   7 5
11 6 NA   6
12 2 5   2 5
13 2 2   2 2
14 7 5   7 5
15 6 5   6 5
16 7 2   7 2
17 7 NA   7
18 3 NA   3
19 4 5   4 5
20 6 5   6 5

示例 2

以下代码片段创建了一个示例数据框 −

x2<-sample(c(NA,500,450),20,replace=TRUE)
y2<-sample(1:1000,20)
df2<-data.frame(x2,y2)
df2

创建以下数据框

     x2 y2
 1 500 389
 2 500 164
 3 NA  267
 4 NA   68
 5 NA  294
 6 500  26
 7 500 740
 8 450 913
 9 NA  556
10 NA  800
11 450  80
12 500 236
13 500  65
14 NA  316
15 450 248
16 NA  654
17 NA  113
18 500 691
19 NA  496
20 450 391

要合并上面创建的数据框中的 x2 和 y2 值,请将以下代码添加到上面的代码片段中 −

x2<-sample(c(NA,500,450),20,replace=TRUE)
y2<-sample(1:1000,20)
df2<-data.frame(x2,y2)
cbind(df2,Combined=paste(df2[,2],replace(df2[,1],is.na(df2[,1]),"")))

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

     x2 y2 Combined
 1 500 389 389 500
 2 500 164 164 500
 3 NA  267   267
 4 NA   68    68
 5 NA  294   294
 6 500  26  26 500
 7 500 740 740 500
 8 450 913 913 450
 9 NA  556   556
10 NA  800   800
11 450  80  80 450
12 500 236 236 500
13 500  65  65 500
14 NA  316   316
15 450 248 248 450
16 NA  654   654
17 NA  113   113
18 500 691 691 500
19 NA  496   496
20 450 391 391 450

相关文章