如何在不添加“Row.names"的情况下按行名称合并数据帧?柱子?

编程入门 行业动态 更新时间:2024-10-27 12:28:49
本文介绍了如何在不添加“Row.names"的情况下按行名称合并数据帧?柱子?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

If I have two data frames, such as:

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).这样做:

), I'd like to merge them by row names, keeping everything (so an outer join, or all=T). This does it:

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)中的行名称.

but I want the input row names to be the row names in the output dataframe (merged.df).

我能做到:

rownames(merged.df) <- merged.df[[1]]
merged.df <- merged.df[-1]

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

which works, but seems inelegant and hard to remember. Anyone know of a cleaner way?

推荐答案

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

Not sure if it's any easier to remember, but you can do it all in one step using 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

这篇关于如何在不添加“Row.names"的情况下按行名称合并数据帧?柱子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-03-30 20:12:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/787568.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:柱子   情况下   名称   数据   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!