0

毎日数百のExcelファイルをダウンロードしてRにインポートする必要があります。それぞれが独自のデータフレームである必要があります。私はcsvを持っています。すべてのアドレスを含むファイル (アドレスは静的なままです)。

csv. ファイルは次のようになります。

http://www.www.somehomepage.com/chartserver/hometolotsoffiles%a
http://www.www.somehomepage.com/chartserver/hometolotsoffiles%b
http://www.www.somehomepage.com/chartserver/hometolotsoffiles%a0
http://www.www.somehomepage.com/chartserver/hometolotsoffiles%aa11
etc.....

次のような単一のファイルで実行できます。

library(XLConnect)

my.url <- "http://www.somehomepage.com/chartserver/hometolotsoffiles%a"

loc.download <- "C:/R/lotsofdata/" # each files probably needs to have their own name here? 

download.file(my.url, loc.download, mode="wb")

df.import.x1 = readWorksheetFromFile("loc.download", sheet=2)) 

# This kind of import works on all the files, if you ran them individually

しかし、各ファイルをダウンロードしてフォルダーに個別に配置し、それらすべてを個別のデータ フレームとして R にインポートする方法がわかりません。

4

1 に答える 1

3

再現可能な例を提供していないため、質問に答えるのは難しく、正確に何を望んでいるのかが明確ではありません。とにかく、以下のコードは正しい方向を示しているはずです。

  1. アクセスしたい URL のリストがあります。

    urls = c("http://www/chartserver/hometolotsoffiles%a",
                 "http://www/chartserver/hometolotsoffiles%b")
    

    あなたの例では、これをcsvファイルからロードします

  2. 次に、各ファイルをダウンロードし、個別のディレクトリに配置します (質問で言及しました)。

    for(url in urls) {
      split_url = strsplit(url, "/")[[1]]
      ##Extract final part of URL
      dir = split_url[length(split_url)]
      ##Create a directory
      dir.create(dir)
      ##Download the file
      download.file(url, dir, mode="wb")
    }
    
  3. 次に、ディレクトリとファイルをループして、結果をリストに保存します。

    ##Read in files
    l = list(); i = 1
    dirs = list.dirs("/data/", recursive=FALSE)
    for(dir in dirs){
      file = list.files(dir, full.names=TRUE)
      ##Do something?
      ##Perhaps store sheets as a list
      l[[i]] = readWorksheetFromFile(file, sheet=2)
      i = i + 1
    }
    

もちろん、ステップ 2 と 3 を 1 つのループに結合することもできます。または、ループをドロップして使用しますsapply

于 2013-10-02T14:04:22.897 に答える