In R, Merge two data frames, fill down the blanks

后端 未结 2 1163
慢半拍i
慢半拍i 2020-12-17 23:40

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         


        
相关标签:
2条回答
  • 2020-12-17 23:52

    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
    #  . . . .
    
    0 讨论(0)
  • 2020-12-17 23:53

    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)
    
    0 讨论(0)
提交回复
热议问题