r - 如何在不添加 "Row.names"列的情况下按行名合并数据帧?

标签 r merge dataframe

如果我有两个数据框,例如:

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

),我想按行名称合并它们,保留所有内容(因此是外部联接,或 all=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]

哪个有效,但似乎不优雅且难以记住。有人知道更清洁的方法吗?

最佳答案

不确定是否更容易记住,但您可以使用 transform 一步完成所有操作。 .

transform(merge(df1,df2,by=0,all=TRUE), row.names=Row.names, Row.names=NULL)
#    x  y  z
#r1  1  1 NA
#r2  2  2 NA
#r3  3  3 NA
#r5 NA NA  5
#r6 NA NA  6
#r7 NA NA  7

关于r - 如何在不添加 "Row.names"列的情况下按行名合并数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375849/

相关文章:

r - 围绕栅格单元绘制轮廓

r - 创建一个热图,其中的数据具有NaN值

R:如何计算截断正态分布的均值和协方差

GitFlow : Properly Testing Release Branches & Master

r - 在R中: add rows based on a date and another condition

r - 根据值排名过滤数据框

git - 如何在 git merge 中强制一个共同的祖先?

regex - 在 awk 中使用非精确匹配合并两个文件

Python dataframe - 3 列中的数据值映射到其他 3 列下

python - 迭代数据帧时所做的更改不会保存