两个输入数据集:
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
}
}
加入可以解决这个问题。但需要一条规则来解决冲突。
答案 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
查看您问题的评论,了解加入数据的内容。