rbind 两个 data.frame 保留行顺序和行名称

标签 r merge dataframe rbind

我有一个列表 data.frame我想行附加到另一个对象,即 merge(..., all=T) .然而,merge似乎删除了我需要保持完整的行名称。有任何想法吗?例子:

x = data.frame(a=1:2, b=2:3, c=3:4, d=4:5, row.names=c("row_1", "another_row1"))
y = data.frame(a=c(10,20), b=c(20,30), c=c(30,40), row.names=c("row_2", "another_row2"))
> merge(x, y, all=T, sort=F)
     a  b  c  d
  1  1  2  3  4
  2  2  3  4  5
  3 10 20 30 NA
  4 20 30 40 NA

最佳答案

既然你知道你实际上并没有合并,而只是 rbind-ing,也许这样的事情会奏效。它利用了 rbind.fill来自“plyr”。要使用它,请指定 listdata.frame你要rbind .

RBIND <- function(datalist) {
  require(plyr)
  temp <- rbind.fill(datalist)
  rownames(temp) <- unlist(lapply(datalist, row.names))
  temp
}
RBIND(list(x, y))
#               a  b  c  d
# row_1         1  2  3  4
# another_row1  2  3  4  5
# row_2        10 20 30 NA
# another_row2 20 30 40 NA

关于rbind 两个 data.frame 保留行顺序和行名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799434/

相关文章:

python - 在为 DataFrame 系列创建类别时如何从 QCUT 中获取整数

r - 将 ashape3d 类转换为 mesh3d

r - 将字符串拆分为给定长度的子字符串并带有余数

MySQL 表合并/联合?

R:如何将两个 data.frame 合并为一个,匹配的 ID 重复自身,有时会丢失

dataframe - Pyspark - 在右侧数据集中加入空值

r - 确定 R 中文件的年龄

r - 将数据框中的多个列连接/粘贴在一起

postgresql - 如何像SVN那样管理一个有分支和主干的数据库

git - 重用 merge 的开发分支/使用 git 重新 merge 到未更改的稳定分支