2016-06-19 1 views
0

における様々な日付で複数のCSVファイルをダウンロード:Rループ:私は、次のWebサイトから月のすべての日のための気象データをダウンロードしたいURL

https://www.wunderground.com/history/airport/KSEA/2013/1/8/DailyHistory.html?format=1 

私はこれがちょうど行うことができることに気づきました上記のウェブリンクの日付を変更してください。例えば、1月9日のためのリンクは、だから、私は個別にこのデータをダウンロードしていたとき、私はCSVファイルを取得することができるが、私は、全体の月のforループを書いてみたら、それはある

...KSEA/2013/1/9/DailyHistory.html?format=1 

になりますただ働かない。以下は、個々のファイルのダウンロードに使用したコードです:

download.file(url = 'https://www.wunderground.com/history/airport/KSEA/2013/1/8/DailyHistory.html?MR=1&format=1', 
       destfile = "/Users/ABCD/Desktop/weather.csv") 

ご協力いただければ幸いです。

+2

"Xに問題があります。ここにYのコードがあります。"あなたはあなたの質問を編集して、うまくいかないforループを含めることができますか? –

+0

'weatherData'パッケージを調べましたか?それは物事を少し容易にするかもしれない。 – Benjamin

答えて

3

「2013/1/8」の代わりに「2013/1/8」をURLに入れても効果があります。

次の関数は、すべてのデータを開始日(たとえば、「2013/01/01」)から終了日(たとえば、「終了日」)までダウンロードします。これは、 2013/02/28 ")。開始日と終了日をカスタマイズすることができます。最後に、ダウンロードしたファイルは、たとえば "/Users/ABCD/Desktop/weather/2013-01-01.csv"になります。 ( "/ Users/ABCD/Desktop/weather"ディレクトリを作成する必要があります)。

mydownload <- function (start_date, end_date) { 
    start_date <- as.Date(start_date) ## convert to Date object 
    end_date <- as.Date(end_date) ## convert to Date object 
    dates <- as.Date("1970/01/01") + (start_date : end_date) ## date sequence 
    ## a loop to download data 
    for (i in 1:length(dates)) { 
    string_date <- as.character(dates[i]) 
    myfile <- paste0("/Users/ABCD/Desktop/weather/", string_date, ".csv") 
    string_date <- gsub("-", "/", string_date) ## replace "-" with "/" 
    myurl <- paste("https://www.wunderground.com/history/airport/KSEA", string_date, "DailyHistory.html?MR=1&format=1", sep = "/") 
    download.file(url = myurl, destfile = myfile, quiet = TRUE) 
    } 
    } 

mydownload("2013/01/01", "2013/02/28") 

コメント:

  1. 当初、私は

    for (mydate in dates) { 
        string_date <- as.character(mydate) 
    

    を使用したが答えは右ではありません。何らかの形でmydateが整数に変換されました。最後に、私はここにまともですforループを使用して

    for (i in 1:length(dates)) { 
        string_date <- as.character(dates[i]) 
    
  2. を行う必要があります。 download.file()にかなりの時間がかかるので、ループオーバーヘッドは重要ではないので、lapplyなどを行う必要はありません。

+0

ご協力ありがとうございますが、上記のコードを使用して生成されたファイルを開こうとすると、リンクの実際のテキストではなくcsvファイル内のweblinkのhtmlコードがコピーされています。だから、ループはここで動作しましたが、生成されたファイルには私が探している情報がありません。これは日付形式と関係があるのだろうかと思います! –

+0

ありがとう@ Zheyuan Li。出来た –

関連する問題