Сначала я имитирую, как 5 CSV-файлов, с колонками, которые выглядят как ваши:
for(i in 1:5){
tab=data.frame(
YEAR=1950:2014,
FFD= rpois(65,100),
LFD= rnorm(65,100,10),
RAN= rnbinom(65,mu=100,size=1),
MEAN = runif(65,min=50,max=150)
)
write.csv(tab,paste0("data",i,".csv"))
}
Теперь нам нужен вектор всех файлов в вашем каталоге, это будет отличаться для вашего, но попробуйте чтобы создать это каким-то образом, используя аргумент шаблона:
csvfiles = dir(pattern="data[0-9]*.csv$")
Итак, мы используем три библиотеки из tidyverse, и я предполагаю, что каждый CSV-файл не такой большой, поэтому код ниже читает все файлы, группируя их по источник и выполняет регрессию, обратите внимание, что вы можете использовать вызов столбцов из фрейма данных, без необходимости переименовывать их:
library(dplyr)
library(purrr)
library(broom)
csvfiles %>%
map_df(function(i){df = read.csv(i);df$data = i;df}) %>%
group_by(data) %>%
do(tidy(lm(FFD ~ YEAR,data=.))) %>%
filter(term!="(Intercept)")
# A tibble: 5 x 6
# Groups: data [5]
data term estimate std.error statistic p.value
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 data1.csv YEAR -0.0228 0.0731 -0.311 0.756
2 data2.csv YEAR -0.139 0.0573 -2.42 0.0182
3 data3.csv YEAR -0.175 0.0650 -2.70 0.00901
4 data4.csv YEAR -0.0478 0.0628 -0.762 0.449
5 data5.csv YEAR 0.0204 0.0648 0.315 0.754
Вы можете просто изменить формулу внутри lm(FFD ~ YEAR,data=.)
, чтобы получить другие регрессии