web-dev-qa-db-ja.com

Rでbz2ファイルを抽出する

たくさんの_.csv.bz2_ファイルがあり、それらをダウンロードして展開し、Rで読み込む必要があります。ファイルをダウンロードし、現在の作業ディレクトリに展開してから読み込む必要があります。 unz(filename,filename.csv)が動作しないようです。どうやってやるの?

どこかで、bzfilesを解凍せずに直接読み取ることができると聞きました。どうやってやるの?

32
Prabhu

次の2つのコマンドのいずれかを使用できます。

  1. read.csv() command:このコマンドを使用すると、csvファイルを含む圧縮ファイル名を直接指定できます。

    read.csv("file.csv.bz2")

  2. read.table()コマンド:このコマンドは、read.csv()コマンドの汎用バージョンです。 read.csv()が自動的に設定する区切り文字およびその他のオプションを設定できます。ファイルを個別に解凍する必要はありません。このコマンドは自動的に実行します。

    read.csv("file.csv.bz2", header = TRUE, sep = ",", quote = "\"",...)

33
Amrit Shrestha

このような:

readcsvbz2file <- read.csv(bzfile("file.csv.bz2"))
23
Komal Rathi

Linuxシステムでは、超高速freadを使用できます。

require(data.table)
fread(sprintf("bzcat %s | tr -d '\\000'", "file.csv.bz2"))

参照: https://Gist.github.com/wush978/93c0f96b68f529678e2d

7
user2161065

基本的に、次のように入力する必要があります。

library(R.utils)
bunzip2("dataset.csv.bz2", "dataset.csv", remove = FALSE, skip = TRUE)

dataset <- read.csv("dataset.csv")

こちらのドキュメントを参照してください: bunzip2 {R.utils}

5
DrKaoliN

read.table の説明によれば、 圧縮ファイル を直接読むことができます。

read.table("file.csv.bz2")
4
Miha Trošt