如果我有两个数据帧,如:如何在不添加“Row.names”列的情况下按行名合并数据框?
df1 = data.frame(x=1:3,y=1:3,row.names=c('r1','r2','r3'))
df2 = data.frame(z=5:7,row.names=c('r5','r6','r7'))
(
R> df1
x y
r1 1 1
r2 2 2
r3 3 3
R> df2
z
r5 5
r6 6
r7 7
),我想用行名称合并它们,藏在心里(这样的外部连接,或所有= T)。该做的:
merged.df <- merge(df1,df2,all=T,by='row.names')
R> merged.df
Row.names x y z
1 r1 1 1 NA
2 r2 2 2 NA
3 r3 3 3 NA
4 r5 NA NA 5
5 r6 NA NA 6
6 r7 NA NA 7
,但我想要的输入行名在输出数据帧(merged.df)该行的名称。
我可以这样做:
rownames(merged.df) <- merged.df[[1]]
merged.df <- merged.df[-1]
其工作原理,但似乎不太优雅又难记。任何人都知道更清洁的方式?
你的例子data.frames没有共同的行,使相当不寻常的例子为'merge',是故意的吗? – flodel
不是故意的,对此很抱歉。 – user116293