Say I have these two data frames:
big.table <- data.frame(\"idx\" = 1:100)
small.table <- data.frame(\"idx\" = sample(1:100, 10), \"color\" = sample(c
A data.table
solution:
require(data.table)
b <- data.table(big.table, key="idx")
s <- data.table(small.table, key="idx")
s[b, roll=T]
# idx color
# 1: 1 NA
# 2: 2 NA
# 3: 3 NA
# 4: 4 blue3
# 5: 5 blue3
# 6: 6 blue3
# 7: 7 blue3
# 8: 8 blue3
# 9: 9 blue3
# 10: 10 blue3
# 11: 11 navajowhite1
# 12: 12 navajowhite1
# . . . .
It sounds like you need na.locf
from the package zoo (stands for last observation carried forward):
library(zoo)
tbl <- merge(small.table, big.table, by = "idx", all.y=TRUE)
tbl$color2 <- na.locf(tbl$color,na.rm = FALSE)