Извлечь файл bz2 в R

У меня есть куча .csv.bz2 файлов, которые мне нужно загрузить, извлечь и прочитать в R. Я скачал файл и хочу извлечь его в текущий рабочий каталог, а затем прочитать его. unz(filename,filename.csv) но это не работает. Как я могу это сделать?

Я где-то слышал, что bzfiles можно читать напрямую без распаковки. Как я могу это сделать?


person Prabhu    schedule 20.09.2014    source источник


Ответы (5)


Вы можете использовать любую из этих двух команд:

  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 = "\"",...)

person Amrit Shrestha    schedule 23.05.2015

Как это:

readcsvbz2file <- read.csv(bzfile("file.csv.bz2"))
person Komal Rathi    schedule 22.09.2014
comment
bzfile()не требуется, read.csv() может автоматически обрабатывать сжатые файлы. Так что это просто read.csv("file.csv.bz2"). Вот пример (первый раздел Загрузка данных). - person Mörre; 27.04.2015
comment
bzipfile() — более общее решение, потому что оно полезно для других форматов. Спасибо - person Charles Santana; 20.03.2020

Вы можете использовать сверхбыстрый fread со встроенной поддержкой файлов, сжатых bz2.

require(data.table)
fread("file.csv.bz2")
person user2161065    schedule 17.03.2015

По сути, вам нужно ввести:

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

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

См. документацию здесь: bunzip2 {R.utils}.

person DrKaoliN    schedule 27.09.2015

Согласно read.table описание можно прочитать в сжатом файле напрямую.

read.table("file.csv.bz2")
person Miha Trošt    schedule 22.09.2014