Извлечь файл bz2 в R
У меня есть группа файлов .csv.bz2
, которую я должен загружать, извлекать и читать в R.
Я загрузил файл и хочу извлечь его в текущий рабочий каталог, а затем прочитал его.
unz(filename,filename.csv)
, но он, похоже, не работает. Как я могу это сделать?
Я где-то слышал, что bzfiles можно читать напрямую без распаковки. Как я могу это сделать?
Ответы
Ответ 1
Вы можете использовать любую из этих двух команд:
-
read.csv()
команда: с помощью этой команды вы можете напрямую предоставить сжатое имя файла, содержащее файл csv.
read.csv("file.csv.bz2")
-
read.table()
команда: эта команда является общей версией команды read.csv()
. Вы можете установить параметры разделителей и другие параметры, которые read.csv()
автоматически устанавливает. Вам не нужно распаковывать файл отдельно. Эта команда делает это автоматически для вас.
read.csv("file.csv.bz2", header = TRUE, sep = ",", quote = "\"",...)
Ответ 2
Вот так:
readcsvbz2file <- read.csv(bzfile("file.csv.bz2"))
Ответ 3
В системах Linux вы можете использовать супер быстрый fread
require(data.table)
fread(sprintf("bzcat %s | tr -d '\\000'", "file.csv.bz2"))
Ссылка: https://gist.github.com/wush978/93c0f96b68f529678e2d
Ответ 4
Согласно read.table, можно прочитать сжатый файл непосредственно.
read.table("file.csv.bz2")
Ответ 5
В принципе, вам нужно ввести:
library(R.utils)
bunzip2("dataset.csv.bz2", "dataset.csv", remove = FALSE, skip = TRUE)
dataset <- read.csv("dataset.csv")
Смотрите документацию здесь: bunzip2 {R.utils}.