2016-07-10 2 views
0

Say У меня есть 30 dataframes всех названных с датой от 01/01/2000 до 30/01/2000 в формате ddmmyy (код ниже):объединить несколько dataframes на основе последовательности имен

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 с учетом даты. В этом случае объедините data.frame с, которые содержат даты от 01-01-00 до 10-01-00.

У меня есть приведенный ниже код, чтобы объединить все данные, но что, если я хочу только выбрать те, что показаны выше?

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

Лучше ли создать список в первую очередь?

ответ

1

Мы можем использовать mget, чтобы получить значения «сезона» в list, а затем rbind в list в data.frame с. Поскольку есть суффикс «тестов», за которым следует «Сезон», связанный с «Сезон», мы можем использовать paste, чтобы получить строку, затем используйте mget.

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

akrun спасибо! Я выстрелил себе в ногу, постарался сделать его более простым вопросом, но теперь внес изменения. Не могли бы вы посмотреть, пожалуйста? Я хочу выбрать 'data.frame', которые содержат 'Season [1:10]' – Bonono

+1

@Bonono Обновлено сообщение – akrun

+0

@ akrun, блестящее спасибо. Просто чтобы усложнить его дальше, что, если суффикс был другим для каждого dataframe - отредактировал вопрос – Bonono