从另一个数据帧填充数据帧中的NA值将保留现有值

时间:2018-08-02 15:27:32

标签: r dataframe

我尝试合并,并认为我做错了什么,因为现有值被删除了。 这是一个示例:

Data frame 1: 
ID  Color  Size       Shape 
1   red      s        circle
2   NA       s        circle
3   blue     s        circle
4   NA       s        circle

Data frame 2: 
ID   Color 
2    blue
4    green 

我想要这个...

ID  COLOR       Size       Shape
1   red           s       circle 
2   blue          s       circle
3   blue          s       circle
4   green         s       circle 

这里是我的实际数据帧的样本。

enter image description here

enter image description here

我尝试过这个。...

Dataframe1 <- scalemerge
Dataframe2 <- finding_NA_URIS
colnames(finding_NA_URIS) <- c("track","artist_uri","track_uri","album")
 inx <- is.na(Dataframe1$track_uri)
Dataframe1$track_uri[inx] <- Dataframe2$track_uri[match(Dataframe1$track[inx], Dataframe2$track)]

1 个答案:

答案 0 :(得分:1)

使用基数R可以使用match

inx <- is.na(Dataframe1$Color)
Dataframe1$Color[inx] <- Dataframe2$Color[match(Dataframe1$ID[inx], Dataframe2$ID)]

Dataframe1
#  ID Color Size  Shape
#1  1   red    s circle
#2  2  blue    s circle
#3  3  blue    s circle
#4  4 green    s circle

数据。

Dataframe1 <- read.table(text = "
ID  Color  Size       Shape 
1   red      s        circle
2   NA       s        circle
3   blue     s        circle
4   NA       s        circle
", header = TRUE, stringsAsFactors = FALSE)


Dataframe2 <- read.table(text = "
ID   Color 
2    blue
4    green
", header = TRUE, stringsAsFactors = FALSE)