根据第1列合并六个文件

use*_*940 -1 perl r

我有6个csv文件,我想根据第1列中的字符串标识进行合并.我想在第2列中保留每个文件的Count-number.以下示例:

文件1:

TAGCTTATCAGACTGATGTTGAC 88902
TAGCACCATTTGAAATCAGTGTT 62017
TAGCTTATCAGACTGATGTTGA  25339
GCATGGGTGGTTCAGTGGTAGAATTCTC    18477
TAGCACCATCTGAAATCGGTTA  12522
CACGGTCCCCCGCGAGGGGGGCCCGGG 11814
TAAAGTGCTGACAGTGCAGAT   10870
GCGCCCTTAGCTCAGTTGGATAGAGCAA    10353
TGTGCAAATCTATGCAAAACTGA 8689
Run Code Online (Sandbox Code Playgroud)

文件2:

TAGCTTATCAGACTGATGTTGAC 290460
TAGCTTATCAGACTGATGTTGA  85960
GCATGGGTGGTTCAGTGGTAGAATTCTC    33273
TAGCACCATTTGAAATCAGTGTT 25284
TAGCACCATCTGAAATCGGTTA  21199
AGTTGGTTAGAGCAACCGG 18608
AGCAGCATTGTACAGGGCTATGA 18449
TGTGCAAATCCATGCAAAACTGA 17968
TAGCTTATCAGACTGATGTTGACA    15530
CACGGTCCCCCGCGAGGGGGGCCCGGG 13258
TGTGCAAATCTATGCAAAACTGA 12847
CCTAAGGCAGGACTGATGACTGGGGTG 12725
GCCGCCGGTGAAATACCACTACTC    11971
TGAGGTAGTAGGTTGTATAGTT  10398
Run Code Online (Sandbox Code Playgroud)

文件3:

TAGCTTATCAGACTGATGTTGAC 181279
TAGCTTATCAGACTGATGTTGA  78661
AGTTGGTTAGAGCAACCGG 24225
CACGGTCCCCCGCGAGGGGGGCCCGGG 22252
AAAAGCTGGGTTGAGAGGGCGA  21334
TGTGCAAATCCATGCAAAACTGA 18541
CGGCGGGTGTTGACGCGATG    17818
TAGCACCATCTGAAATCGGTTA  15642
CCTAAGGCAGGACTGATGACTGGGGTG 14003
TAGCTTATCAGACTGATGTTGACA    12549
TAGCACCATTTGAAATCAGTGTT 12515
AGCAGCATTGTACAGGGCTATGA 12205
Run Code Online (Sandbox Code Playgroud)

输出:

ID                        file1         file2             file3
TAGCTTATCAGACTGATGTTGAC   88902         290460            181279
....
....
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

保留所有data.frames内容list并使用Reduce/merge.假设的名称first列是ID在所有数据集和第二列名是file1,file2等.

Reduce(function(...) merge(..., by='ID'), list(df1, df2, df3))
#                           ID file1  file2  file3
#1 CACGGTCCCCCGCGAGGGGGGCCCGGG 11814  13258  22252
#2      TAGCACCATCTGAAATCGGTTA 12522  21199  15642
#3     TAGCACCATTTGAAATCAGTGTT 62017  25284  12515
#4      TAGCTTATCAGACTGATGTTGA 25339  85960  78661
#5     TAGCTTATCAGACTGATGTTGAC 88902 290460 181279
Run Code Online (Sandbox Code Playgroud)

如果没有headers,你可以使用阅读read.table/read.csv与header=FALSE.然后,列名应为V1,V2对所有的数据集.我也会在列表中阅读它lapply.假设你已经单独阅读过,

 setNames(Reduce(function(...) merge(..., by='V1'),
          list(df1, df2, df3)),c('ID', paste0('file',1:3)) )
Run Code Online (Sandbox Code Playgroud)

如果你想读的所有文件list从working directory

 files <- list.files(pattern='^file\\d+.csv')
 lst <- lapply(files, function(x) read.csv(x,header=FALSE))
 setNames(Reduce(function(...) merge(..., by='V1'),
          lst),c('ID', paste0('file',seq_along(files))) )
Run Code Online (Sandbox Code Playgroud)