使用模式将R中的数据帧与文件夹中的.csv数据帧绑定

时间:2018-01-12 16:36:21

标签: r

我知道有几种方法可以将文件夹中的文件绑定到一个大数据框(例如来自rbindlist(mget(ls(pattern = "^df\\.\\d+")))包的data.table)。这不是我打算在这里做的。我需要将我在R环境中的数据帧与包含.csv文件的文件夹中的数据帧绑定。 R dfs和.csv dfs具有相同的结构(类似于rbind.fill)。

数据框名称具有前4个字符的指示符。所以在R数据中,framse看起来像这样:DF01DF02DF03。在.csv文件夹中注明如下:DF01_aDF01_B; DF02_aDF02_b; DF03_aDF03_b

因此,您可以看到R中的每个数据框,我将添加多个.csv,所以我想出最简单的方法是使用模式绑定它们。例如pattern=substr(df.list,1,4),它应该基于前4个字符绑定dfs。

1 个答案:

答案 0 :(得分:0)

也许是这样的:

DF01 = data.frame(a=c(1,2,3),b=c(3,2,1))
DF02 = data.frame(a=c(1,2,3),b=c(3,2,1))

my_dfs = ls()[grepl('DF',ls())]

library(data.table)
for (i in 1:length(my_dfs))
{
  thisdf <- get(my_dfs[i])
  files_to_add <- list.files()[grepl(my_dfs[i],list.files())]
  dfs_to_add <- lapply(files_to_add,fread)
  dfs_to_add[[length(dfs_to_add)+1]]= thisdf
  assign(my_dfs[i],rbindlist(dfs_to_add,fill=T))
}

我的目录中有三个名为DF01_a.csvDF01_b.csvDF02_a.csv的文件,输出:

> DF01
   a b
1: 4 6
2: 5 7
3: 4 6
4: 5 7
5: 1 3
6: 2 2
7: 3 1

> DF02
   a b
1: 4 6
2: 5 7
3: 1 3
4: 2 2
5: 3 1

希望这有帮助!