合并不同大小的数据框

时间:2016-08-12 13:06:09

标签: r merge

假设您有4个或更多csv文件,我只想合并它们,并打印输出!

我打开了这样的文件:

df1 <- read.csv("file1", sep ='\t')
df2 <- read.csv("file2", sep ='\t')
df3 <- read.csv("file3", sep ='\t')
df4 <- read.csv("file4", sep ='\t')

问题是所有文件都有不同数量的行和列,没有相同的列名。我的教授说要合并它们,所以我期待输出就像这样

file1.column11 ... file1.column1N file2.column21 ... file2.column2N ...
value11 ...  value1N    NA  ...  NA
.
.
.
NA  ...  NA    value21  ...  value2N

这可以以某种方式完成吗?我一直在使用merge(),join_all()和其他东西,我不能深入到这个......

我也是R的新手。

3 个答案:

答案 0 :(得分:1)

我是否做对了:你没有相同的列名?

如果是,那么只有当他们有一个单独的列时才能并排merge(),并且它们将被合并。

例如,您可以拥有年份列或主题ID等。 然后你写:

file.overall <- merge(file1,file2,by="common_column_name")

接下来,连接下一个文件:

file.overall2 <- merge(file.overall,file2,by="common_column_name")

按顺序保留此功能,直到添加完所有文件为止。

如果您希望列具有不同的名称,请事先重命名列:

names (file1)<- c("file1.column1_name", ...)

另一方面,如果您希望将merge个文件放在另一个下,则所有列的名称必须相同,并且您可以使用rbind()

答案 1 :(得分:0)

通常,没有特定的方法将数据框与不同的内容合并。

您需要弄清楚如何合并数据集。有些事情要考虑:

  • 任何列中的任何数据集是否都具有相同类型的东西(即使列名不同)?
  • 您要保留/丢弃哪些数据?
  • 哪些数据位对所有数据集都是通用的?
  • 其他专栏有什么关系?任何列之间是否存在一对一或一对多的关系?

答案 2 :(得分:0)

如果所有数据框都有不同的行名,您可以按以下方式合并它们:

merge(df1, df2, by="row.names", all.x=T, all.y=T)

否则,如果您安装了plyr,则可以执行以下操作(它将使用NA填充所有空单元格):

library(plyr)
rbind.fill(df1, df2)