Merge Multiple Data Frames by Row Names

前端 未结 3 545
谎友^
谎友^ 2021-02-03 13:34

I\'m trying to merge multiple data frames by row names.

I know how to do it with two:

x = data.frame(a = c(1,2,3), row.names = letters[1:3])
y = data.fra         


        
3条回答
  •  别跟我提以往
    2021-02-03 13:51

    As an alternative to Reduce and merge:

    If you put all the data frames into a list, you can then use grep and cbind to get the data frames with the desired row names.

    ## set up the data
    > x <- data.frame(x1 = c(2,4,6), row.names = letters[1:3])
    > y <- data.frame(x2 = c(3,6,9), row.names = letters[1:3])
    > z <- data.frame(x3 = c(1,2,3), row.names = letters[1:3])
    > a <- data.frame(x4 = c(4,6,8), row.names = letters[4:6])
    > lst <- list(a, x, y, z)
    
    ## combine all the data frames with row names = letters[1:3]
    > gg <- grep(paste(letters[1:3], collapse = ""), 
                 sapply(lapply(lst, rownames), paste, collapse = ""))
    > do.call(cbind, lst[gg])
    ##   x1 x2 x3
    ## a  2  3  1
    ## b  4  6  2
    ## c  6  9  3
    

提交回复
热议问题