首页 > 解决方案 > 如何将 20+ csv 文件合并到 R 中的 1 个数据框中(每次添加新文件时添加新列)

问题描述

我有 26 个具有相同行数和列数的 csv 文件,我希望将它们合并到 R 中的单个数据框中。下面给出了修改后的示例。

文件 1.csv

chrom   pos     PI
3       23435  0.1
3       35465  0.1
3       36487  0.2
3       37888  0.4
3       38516  0.1

文件2.csv

chrom   pos     PI
3       23435  0.1
3       35465  0.1
3       36487  0.2
3       37888  0.4
3       38516  0.1

期望的输出

chrom   pos     PI   chrom   pos     PI
3       23435  0.1   3       23435  0.1
3       35465  0.1   3       35465  0.1
3       36487  0.2   3       36487  0.2
3       37888  0.4   3       37888  0.4
3       38516  0.1   3       38516  0.1

我编写了以下代码,没有错误:

library(data.table)

file_list <- list.files('/home/aahm/SoftMaker/Documents/Aaisha/MPhil_PhD/2021/1.January/Results/csv_files/sitepi/ACKR2', pattern="*.csv", full.names=TRUE)

ldf <- lapply(file_list , read.csv)
df.final <- do.call("rbind", ldf)

View (df.final)

但是,outfile 数据框采用以下格式:

chrom   pos     PI
3       23435  0.1
3       35465  0.1
3       36487  0.2
3       37888  0.4
3       38516  0.1
3       23435  0.1
3       35465  0.1
3       36487  0.2
3       37888  0.4
3       38516  0.1

我的编码有什么问题?我该怎么做?如果有任何帮助,我将不胜感激?

标签: rdataframemerge

解决方案


如果我理解您需要不同的排序...

df.final <- df.final[order(df.final$chrom, df.final$pos, df.final$PI),]


   chrom   pos  PI
1      3 23435 0.1
6      3 23435 0.1
2      3 35465 0.1
7      3 35465 0.1
3      3 36487 0.2
8      3 36487 0.2
4      3 37888 0.4
9      3 37888 0.4
5      3 38516 0.1
10     3 38516 0.1

推荐阅读