根据名称序列组合多个数据帧

时间:2016-07-10 16:00:34

标签: r list dataframe merge rbind

假设我有30个数据框,所有数据框都以01/01/200030/01/2000的日期命名,格式为ddmmyy(代码如下):

Season <- seq(as.Date("2000-01-01"),as.Date("2000-01-30"),1)
Season <- format(Season,"%d%m%y")

for (s in Season) {

  df <- data.frame(X=1:10, Y=1:10)

  aa <- paste(s,"tests",s ,sep = "_")

  assign(aa,df)

}

您可以看到,每个名称都添加了tests字样。我想根据日期合并(rbind?)data.frame s。在这种情况下,请将data.frame01-01-00之间的日期<{>}包含的10-01-00合并。

我有以下代码来组合所有数据帧但是如果我只想选择上面显示的那些?

All_dfs <- do.call(rbind, eapply(.GlobalEnv,function(x) if(is.data.frame(x)) x))

首先创建列表会更好吗?

1 个答案:

答案 0 :(得分:1)

我们可以使用mgetlist中获取“季节”的值,然后rbind list data.frame的{​​{1}}。由于后缀为“ tests ”,后跟“Season”连接到“Season”,我们可以使用paste来获取字符串,然后使用mget

res <- do.call(rbind, mget( paste0(Season[1:10], "_tests_", Season[1:10])))
dim(res)
#[1] 100   2