如何在 R 中合并数据框后,使用非 NA 的其他值填充缺失值?


要在 R 中合并数据框后使用非 NA 的其他值填充缺失值,我们可以按照以下步骤操作:

  • 首先,创建两个数据框。

  • 然后,根据两个数据框之间的公共列合并它们。

  • 之后,将 NA 值替换为其他值。

示例

创建第一个数据框

让我们创建一个如下所示的数据框:

Open Compiler
ID<-1:10 x<-sample(1:100,10) df1<-data.frame(ID,x) df1

输出

执行上述脚本后,将生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):

   ID x
1   1 28
2   2 50
3   3 13
4   4 43
5   5 48
6   6 49
7   7 52
8   8 54
9   9 72
10 10 32

创建第二个数据框

让我们创建一个如下所示的数据框:

Open Compiler
ID<-1:15 y<-sample(1:10,15,replace=TRUE) df2<-data.frame(ID,y) df2

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

执行上述脚本后,将生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):

    ID y
1   1  2
2   2  9
3   3 10
4   4  8
5   5 10
6   6  7
7   7  9
8   8  4
9   9  2
10 10  9
11 11  3
12 12  5
13 13 10
14 14  7
15 15  1

合并数据框

使用 merge 函数根据 ID 列合并 df1 和 df2:

Open Compiler
ID<-1:10 x<-sample(1:100,10) df1<-data.frame(ID,x) ID<-1:15 y<-sample(1:10,15,replace=TRUE) df2<-data.frame(ID,y) merge(df1,df2,all=TRUE,by="ID") DF<-merge(df1,df2,all=TRUE,by="ID") DF

输出

    ID x  y
1   1 28  2
2   2 50  9
3   3 13 10
4   4 43  8
5   5 48 10
6   6 49  7
7   7 52  9
8   8 54  4
9   9 72  2
10 10 32  9
11 11 NA  3
12 12 NA  5
13 13 NA 10
14 14 NA  7
15 15 NA  1

将 NA 替换为其他值

使用 is.na 函数将 DF 中的 NA 替换为点 (.),如下所示:

Open Compiler
ID<-1:10 x<-sample(1:100,10) df1<-data.frame(ID,x) ID<-1:15 y<-sample(1:10,15,replace=TRUE) df2<-data.frame(ID,y) merge(df1,df2,all=TRUE,by="ID") DF<-merge(df1,df2,all=TRUE,by="ID") DF[is.na(DF)]<-"." DF

输出

    ID x  y
1   1 28  2
2   2 50  9
3   3 13 10
4   4 43  8
5   5 48 10
6   6 49  7
7   7 52  9
8   8 54  4
9   9 72  2
10 10 32  9
11 11  .  3
12 12  .  5
13 13  . 10
14 14  .  7
15 15  .  1

更新于: 2021年11月16日

2K+ 浏览量

开启你的 职业生涯

完成课程并获得认证

开始学习
广告