異なるアクセスファイル(同じフォルダの下にある別のサブフォルダにある)をマージしようとしています。さまざまなブログや人々がここで尋ねたいくつかの質問を読んだ後、私は以下のコードを思いついた。複数のACCESSファイルをRで結合する
Parent.Folder<-"D:/Documents/Rwd"
setwd(Parent.Folder)
library(RODBC)
subfolders<-list.dirs(Parent.Folder, recursive = TRUE)[-1]
list_filenames<-list.files(subfolders, recursive = FALSE)
list_filenames<-paste("D:/Documents/Rwd/", list_filenames, sep="")
list_filenames<-sub(".mdb","",list_filenames)
for (file in list_filenames){
if(!exists("data")){
channel<-odbcConnectAccess(file)
data<-sqlQuery(channel,paste("select* from HRESULTS"))
close(channel)
}
if(exists("data")){
channel<-odbcConnectAccess(file)
temp_data<-sqlQuery(channel,paste("select* from HRESULTS"))
data<-rbind(data,temp_data)
rm(temp_data)
close(channel)
}
}
すべてのテーブルは同じフォーマットであり、私の目的は1つのデータフレームでそれらを取得することです。最初のif文が正常に実行され、最初のファイルのデータを含むデータフレームが返されましたが、その後、エラー "sqlQueryのエラー(チャンネル、貼り付け(" select * from HRESULTS ")): 最初の引数が開いていませんRODBCのチャンネル " 私は非常に明白な間違いをしている場合、私は謝罪する前にODBCやSQLで働いたことがない。どんな助けでも大歓迎です。ありがとう!
が鳴ります。アクセスファイルは、R-32ビットを介して接続するのが好きではありません。また、ファイルに応じて、 'odbcConnectAccess2007'がより良いサービスを提供するかもしれません。特に私の経験は.accdbファイルであり、異なる動作をするかどうかはわかりません。あなたが全体のテーブルをつかんでいるなら 'sqlFetch'を使うことができます。これは少し早く見つけました。 – Badger
[This](http://svitsrv25.epfl.ch/R-doc/library/Hmisc/html/mdb.get.html)も役に立ちます。単にmdbテーブルを 'Hmisc'パッケージから取り出します。 – Badger
@Badger - Hmiscには必要なように見えるのでmdb-toolsパッケージをインストールしようとしましたが、 'mdb-tools'はRバージョン3.2.3では使用できません。この問題を解決するために何をすべきかは不明です。 – asmi