Как добавить несколько таблиц из нескольких рабочих книг в один кадр данных в R - PullRequest
0 голосов
/ 23 мая 2018

У меня есть 10 файлов Excel (.xlsx), в каждом по 10 таблиц.

Мне нужно прочитать 3 таблицы из каждой книги и, наконец, добавить их в один кадр данных в R.

Данные:

заголовок:

 Country    Jan-14  Feb-14  Mar-14  Apr-14  May-14  Jun-14  Jul-14  Aug-14  Sep-14  Oct-14  Nov-14  Dec-14  FY

фактические данные

 Austria    43  52  64  82  60  61  57  36  110 96  66  64  791 
 Belgium    143 258 184 207 202 191 209 118 136 169 121 108 2,046   
 Bulgaria   0   0   0   0   0   0   0   0   0   0   0   0   0   

Код:

library(XLConnect)
files = list.files("C:/Users/kushaa/Documents/Frost_casestudy/")

sheet.index <- c(3,6,9)

colname = c("Country","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","FY","truck_type")

data.1 <- data.frame(matrix(rep(NA,length(colname)),ncol = length(colname)))

for (i in 1:length(files)){

   wb = loadWorkbook(files[i])
for (j in 1:length(sheet.index)){
   ss = readWorksheet(wb, sheet.index[j],startRow = 5, header = FALSE)
   truck_type = rep(sheet.names[j],nrow(ss))
   df = data.frame(ss,truck_type)
   names(df) <- colname
   data_merge <- rbind(data.1,df)

 }
}

Но ударил получение данных с одного листа (truck_type= CV) только, но не листы (truck_type = LCV, HCV)

Вывод:

         Country  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec    FY truck_type
1           <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>  <NA>       <NA>
2        Austria   43   54   67   90   68   97   65  108   83   75   87   90   927         CV
3        Belgium  275  232  306  235  330  339  279  239  261  211  155  122 2,984         CV

Также как извлечь год из имен файлов:

  [1] "2014_by_country_and_type_Enlarged_Europe.xlsx"            
  [2] "20140211_02_2012_vo_By_Country_Enlarged_Europe.xls"       
  [3] "20150219_2013_vo_By_Country_Enlarged_Europe.xlsx"

Запрос:

  regmatches(files, regexpr("[0-9].*[0-9]", files))

Но это дает:

 [1] "2014"            
 [2] "20140211_02_2012" 
 [3]"20150219_2013"   

Мне нужен вывод как:

 2014
 2012
 2013
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...