如何将文件夹中的不同csv文件(标题不完全相同)合并到R中的单个csv文件中

如何将文件夹中的不同csv文件(标题不完全相同)合并到R中的单个csv文件中,r,merge,R,Merge,我的文件夹包含365个csv文件,这些文件表示每天的空气监测站点数据。我想将不同的csv文件合并到R中的单个csv文件中。问题是每个csv的站点数可能不同,因为随着时间的推移会添加新站点。但我有一个名为“total_sites”的csv文件它包含年底的所有站点。我想使用此“总站点”来补充每个文件中缺少的站点,以便每个csv文件中的列数相同,因此我可以使用rbind和do.call将所有文件合并在一起。但我不知道如何使用“total_sites”来补充每个文件中缺少的站点,从而使每个文件中的列数相

我的文件夹包含365个csv文件,这些文件表示每天的空气监测站点数据。我想将不同的csv文件合并到R中的单个csv文件中。问题是每个csv的站点数可能不同,因为随着时间的推移会添加新站点。但我有一个名为“total_sites”的csv文件它包含年底的所有站点。我想使用此“总站点”来补充每个文件中缺少的站点,以便每个csv文件中的列数相同,因此我可以使用
rbind
do.call
将所有文件合并在一起。但我不知道如何使用“total_sites”来补充每个文件中缺少的站点,从而使每个文件中的列数相同

这些文件的示例如下:
file20170101

#   date         A101   A102   A201   A202   A301 
#1  0101  PM2.5   1       1      1      1      1
#2  0101  SO2     1       1      1      1      2
#3  0101  NO2     2       2      2      2      2
#   date       A101   A102   A201   A202   A301   A311  A312 A333 
#1  0810 PM2.5   1       1      1      1      1      1     1   1
#2  0810 SO2     1       1      1      1      2      2     2   2
#3  0810 NO2     2       2      2      2      2      3     3   3
#   date       A101   A102   A201   A202   A301   A311  A312  A333  A334  A335 
#1  1010 PM2.5   1       1      1      1      1      1     1    1     1     1
#2  1010 SO2     1       1      1      1      2      2     2    2     2     2
#3  1010 NO2     2       2      2      2      2      3     3    3     2     2
file20170810

#   date         A101   A102   A201   A202   A301 
#1  0101  PM2.5   1       1      1      1      1
#2  0101  SO2     1       1      1      1      2
#3  0101  NO2     2       2      2      2      2
#   date       A101   A102   A201   A202   A301   A311  A312 A333 
#1  0810 PM2.5   1       1      1      1      1      1     1   1
#2  0810 SO2     1       1      1      1      2      2     2   2
#3  0810 NO2     2       2      2      2      2      3     3   3
#   date       A101   A102   A201   A202   A301   A311  A312  A333  A334  A335 
#1  1010 PM2.5   1       1      1      1      1      1     1    1     1     1
#2  1010 SO2     1       1      1      1      2      2     2    2     2     2
#3  1010 NO2     2       2      2      2      2      3     3    3     2     2
file20171010

#   date         A101   A102   A201   A202   A301 
#1  0101  PM2.5   1       1      1      1      1
#2  0101  SO2     1       1      1      1      2
#3  0101  NO2     2       2      2      2      2
#   date       A101   A102   A201   A202   A301   A311  A312 A333 
#1  0810 PM2.5   1       1      1      1      1      1     1   1
#2  0810 SO2     1       1      1      1      2      2     2   2
#3  0810 NO2     2       2      2      2      2      3     3   3
#   date       A101   A102   A201   A202   A301   A311  A312  A333  A334  A335 
#1  1010 PM2.5   1       1      1      1      1      1     1    1     1     1
#2  1010 SO2     1       1      1      1      2      2     2    2     2     2
#3  1010 NO2     2       2      2      2      2      3     3    3     2     2
总站点数

#         A101   A102   A201   A202   A301   A311  A312  A333  A334  A335 A400
我想要的结果是:

#    date        A101   A102   A201   A202   A301   A311  A312  A333  A334  A335 A400
#1  0101  PM2.5   1       1      1      1      1     NA    NA    NA    NA   NA    NA
#2  0101  SO2     1       1      1      1      2     NA    NA    NA    NA   NA    NA
#3  0101  NO2     2       2      2      2      2     NA    NA    NA    NA   NA    NA
#4  0810 PM2.5    1       1      1      1      1      1     1    1     NA   NA    NA
#5  0810 SO2      1       1      1      1      2      2     2    2     NA   NA    NA
#6  0810 NO2      2       2      2      2      2      3     3    3     NA   NA    NA
#7  1010 PM2.5    1       1      1      1      1      1     1    1     1     1    NA
#8  1010 SO2      1       1      1      1      2      2     2    2     2     2    NA 
#9  1010 NO2      2       2      2      2      2      3     3    3     2     2    NA

我们可以将它们加载到
列表中
并使用
绑定行
。它将用
NA

library(dplyr)
mget(ls(pattern = "^file\\d+$"))) %>%
      bind_rows

我们可以将它们加载到
列表中
并使用
绑定行
。它将用
NA

library(dplyr)
mget(ls(pattern = "^file\\d+$"))) %>%
      bind_rows

要使用data.table给出答案,请执行以下操作:

library(data.table)

#Detect all files in the folder:
filesList <- list.files("path/to/your/folder/",
           pattern = ".csv$",
           full.names = TRUE)

#Read in all files as data.table
tableList <- lapply(filesList, function(x) fread(x))

#Combine all data.tables in the list into one data.table and fill missing values
fullTable <- rbindlist(tableList, fill = TRUE) 

要使用data.table给出答案,请执行以下操作:

library(data.table)

#Detect all files in the folder:
filesList <- list.files("path/to/your/folder/",
           pattern = ".csv$",
           full.names = TRUE)

#Read in all files as data.table
tableList <- lapply(filesList, function(x) fread(x))

#Combine all data.tables in the list into one data.table and fill missing values
fullTable <- rbindlist(tableList, fill = TRUE)