在R中基于rownames合并dataframe

我怎样才能合并两个数据框的列,包含一组不同的列,但有一些具有相同名称的行? 两个数据框中不存在的行的字段应填入零:

> d abcdefghij 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 klmnopqrst 1 11 12 13 14 15 16 17 18 19 20 3 21 22 23 24 25 26 27 28 29 30 > de abcdefghijklmnopqrst 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 

看到?merge

名称“row.names”或数字0指定行名称。

例:

 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 abcdefghijklmnopqrs 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 

R示例R在索引上连接dataframe:

 a = c(10, 20, 20, 30, 50) b = c('a', 'b', 'c', 'c', 'c') df1 = data.frame(a, b) df1 d = c(100, 200, 200, 300, 500) e = c('a', 'b', 'c', 'c', 'c') df2 = data.frame(d, e) df2 df3 = merge(df1, df2, by.x='b', by.y='e') df3 

打印:

  ab 1 10 a 2 20 b 3 20 c 4 30 c 5 50 c de 1 100 a 2 200 b 3 200 c 4 300 c 5 500 c bad 1 a 10 100 2 b 20 200 3 c 20 200 4 c 20 300 5 c 20 500 6 c 30 200 7 c 30 300 8 c 30 500 9 c 50 200 10 c 50 300 11 c 50 500