[〜#〜] r [〜#〜]を使用してWebページから.csvファイルをダウンロードして抽出しようとしています。
この質問は Rを使用して圧縮データファイルをダウンロードし、データを抽出してインポートする の複製です。
ソリューションを機能させることができませんが、使用しているWebアドレスが原因である可能性があります。
http://data.worldbank.org/country/united-kingdom (download dataドロップの下から.csvファイルをダウンロードしようとしていますダウン)
上記のリンクから@Dirkのソリューションを使用して、私は試しました
temp <- tempfile()
download.file("http://api.worldbank.org/v2/en/country/gbr?downloadformat=csv",temp)
con <- unz(temp, "gbr_Country_en_csv_v2.csv")
dat <- read.table(con, header=T, skip=2)
unlink(temp)
ページのソースコードを確認して拡張リンクを取得しましたが、問題の原因となっていると思いますが、アドレスバーに貼り付けても機能します。
ファイルは正しいGBでダウンロードされます
download.file("http://api.worldbank.org/v2/en/country/gbr?downloadformat=csv",temp)
# trying URL 'http://api.worldbank.org/v2/en/country/gbr?downloadformat=csv'
# Content type 'application/Zip' length 332358 bytes (324 Kb)
# opened URL
# downloaded 324 Kb
# also tried unzip but get this warning
con <- unzip(temp, "gbr_Country_en_csv_v2.csv")
# Warning message:
# In unzip(temp, "gbr_Country_en_csv_v2.csv") :
# requested file not found in the Zip file
しかし、これらは私が手動でダウンロードしたときのファイル名です。
私はどこが間違っているのかいくつかの助けに感謝します、ありがとう
Windows 8、Rバージョン3.1.0を使用しています
データをダウンロードして解凍するには、mode="wb"
を設定する必要があります
download.file("...",temp, mode="wb")
unzip(temp, "gbr_Country_en_csv_v2.csv")
dd <- read.table("gbr_Country_en_csv_v2.csv", sep=",",skip=2, header=T)
デフォルトはテキストファイルを想定した「w」のようです。プレーンなcsvファイルの場合は問題ありません。ただし、圧縮されているため、バイナリファイルであり、「wb」です。 「wb」部分がないと、Zipをまったく開くことができません。
Word Bank Developmet Indictorsは WDIパッケージ を使用して取得できます。例えば、
library(WDI)
inds <- WDIsearch(field = "indicator")[, 1]
GB <- WDI("GB", indicator = inds)
詳細については、 WDIsearch および [〜#〜] wdi [〜#〜] 関数および rerferenceマニュアル を参照してください。
それはほとんどすべてが大丈夫です。この場合、コンマ区切りファイルであることを指定するだけで済みます。たとえば、sep=","
でread.table
を使用します。
temp <- tempfile()
download.file("http://api.worldbank.org/v2/en/country/gbr?downloadformat=csv",
temp)
con <- unz(temp, "gbr_Country_en_csv_v2.csv")
dat <- read.table(con, header=T, skip=2, sep=",")
unlink(temp)
この小さな変更で、CSVをスムーズにインポートできます。
HTH、ルカ