我使用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")