web-dev-qa-db-fra.com

Extraire le fichier bz2 dans R

J'ai un tas de fichiers .csv.bz2, Que je dois télécharger, extraire et lire dans R. J'ai téléchargé le fichier et je veux l'extraire dans le répertoire de travail actuel, puis le lire. unz(filename,filename.csv) mais cela ne semble pas fonctionner. Comment puis je faire ça?

J'ai entendu quelque part que les fichiers bz peuvent être lus directement sans décompresser. Comment puis je faire ça?

32
Prabhu

Vous pouvez utiliser l'une de ces deux commandes:

  1. read.csv() commande: avec cette commande, vous pouvez fournir directement votre nom de fichier compressé contenant le fichier csv.

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

  2. Commande read.table(): Cette commande est une version générique de la commande read.csv(). Vous pouvez définir des délimiteurs et d'autres options que read.csv() définit automatiquement. Vous n'avez pas besoin de décompresser le fichier séparément. Cette commande le fait automatiquement pour vous.

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

33
Amrit Shrestha

Comme ça:

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

Sur les systèmes Linux , vous pouvez utiliser le super rapide fread

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

Référence: https://Gist.github.com/wush978/93c0f96b68f529678e2d

7
user2161065

Fondamentalement, vous devez taper:

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

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

Voir la documentation ici: bunzip2 {R.utils} .

5
DrKaoliN

Selon read.table description, on peut lire n fichier compressé directement.

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