1. ホーム
  2. r

[解決済み] Rによるzip圧縮されたデータファイルのダウンロード、抽出、データのインポート

2022-05-18 11:10:04

質問

Twitterで@EZGraphsが書いています。 オンラインのcsvの多くはzip圧縮されています。ダウンロードし、アーカイブを解凍し、R を使って data.frame にデータをロードする方法はありますか?#Rstats"

私も今日これを行おうとしていましたが、結局手動でzipファイルをダウンロードするだけでした。

のようなことをやってみました。

fileName <- "http://www.newcl.org/data/zipfiles/a1.zip"
con1 <- unz(fileName, filename="a1.dat", open = "r")

といった感じですが、まだまだ先のような気がしています。 何かご意見はありませんか?

どのように解決するのですか?

Zip アーカイブは、実際にはコンテンツのメタデータなどを含む 'ファイルシステム' と言えます。以下を参照してください。 help(unzip) を参照してください。 ですから、上でスケッチしたことを行うには

  1. 一時ファイル名を作成します (例 tempfile() )
  2. 使用する download.file() を使用して、ファイルを一時ファイルに取り込みます。
  3. 使用する unz() で、temp.ファイルからターゲットファイルを取り出す。
  4. を経由してtempファイルを削除します。 unlink()

これはコードでは (基本的な例をありがとう、でもこっちの方が簡単だよ) 次のようになります。

temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
data <- read.table(unz(temp, "a1.dat"))
unlink(temp)

圧縮された ( .z ) または gzip された ( .gz ) または bzip2ed ( .bz2 ) ファイルは というファイルだけです。 で、これらは接続から直接読み込むことができます。 ですから、データプロバイダーが代わりにそれを使うようにしましょう :)