r语言 - 不返回NA值的左连接



我使用R和库dplyr

我想把一个更大的数据库和一个更小的数据库连接起来(按行计算)。

我使用左连接,因为我希望最终数据库的行数与大数据库相同。

当较小的数据库没有对应于连接键的值时,这自然返回NA值。

我想要实现的是将较小数据库的先前值复制到左连接返回NA的行中。

换句话说:

if is.na(columnvalue[j]) == TRUE then 
columnvalue[j] = columnvalue[j-1]

其中columnvalue是来自较小数据库和j = 1,..., nrow(largerdataset)的连接列。

带有if语句的循环应该可以工作,但是它有点麻烦。还有其他更聪明的解决方案吗?谢谢。

如果您使用一些示例数据进行更新,我可以为此提供完整的代码。一般的解决方案是使用tidyr包中的fill,如果需要的话,可以使用group_by作为密钥。你可以这样写:

library(tidyverse)
data %>%
# group_by(key) %>%
tidyr::fill(var1, var2, var3, .direction = "up")

最新更新