R:如何有效地用另一个数据集填充缺失值?

时间:2017-02-03 15:14:01

标签: r dplyr

两个输入数据集:

A <- data.frame(id = c(1, 2, 3), value = rep(NA, 3))
A 
     id value
  <dbl> <lgl>
1     1    NA
2     2    NA
3     3    NA

B <- data.frame(id = c(3, 2), value = c(3, 2))
B
  id value
1  3     3
2  2     2

将B中的可用值添加到A后,预计会有:

A 
     id value
  <dbl> <lgl>
1     1    NA
2     2    2
3     3    3

可以通过以下for循环来实现。但是,for循环通常非常慢。如何更有效地做到这一点?

for(i in 1:nrow(A)){
  item <- A[i,]
  print(item)
  if(is.na(item$value) && (item$id %in% B$id)){
    A[i, "value"] <- B[B$id == item$id,]$value
  }
}

加入可以解决这个问题。但需要一条规则来解决冲突。

1 个答案:

答案 0 :(得分:-1)

您可以使用加入(library(dplyr) A <- data.frame(id = c(1, 2, 3), value = rep(NA, 3)) B <- data.frame(id = c(3, 2), value = c(3, 2)) A %>% left_join(B, by='id') %>% mutate(value = ifelse(is.na(value.x),value.y,value.x)) ):

HTTP Requests Default

查看您问题的评论,了解加入数据的内容。