Merge data frames based on rownames in R

How can I merge the columns of two data frames, containing a distinct set of columns but some rows with the same names? The fields for rows that don't occur in both data frames should be filled with zeros:

> d a b c d e f g h i j 1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10 2 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 > e k l m n o p q r s t 1 11 12 13 14 15 16 17 18 19 20 3 21 22 23 24 25 26 27 28 29 30 > de a b c d e f g h i j k l m n o p q r s t 1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10 11 12 13 14 15 16 17 18 19 20 2 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0 0 0 0 0 0 0 0 0 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 21 22 23 24 25 26 27 28 29 30 

1 Answer

See ?merge:

the name "row.names" or the number 0 specifies the row names.

Example:

R> de <- merge(d, e, by=0, all=TRUE) # merge by row names (by=0 or by="row.names") R> de[is.na(de)] <- 0 # replace NA values R> de Row.names a b c d e f g h i j k l m n o p q r s 1 1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10 11 12 13 14 15 16 17 18 19 2 2 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0 0 0 0 0 0 0 0 3 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 21 22 23 24 25 26 27 28 29 t 1 20 2 0 3 30 
5

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like