在R中读写csv.gz文件

Max*_*ian 5 gzip r

关于这个主题有非常相似的问题,但非正确地解决了这个问题.

我有一个csv.gz文件,我想"解压缩"该文件并将其作为普通的*.csv文件.我想首先要读取csv.gz文件,然后通过write.csv命令创建csv文件本身.

在这里,我尝试了其他一些事情:

gz.file <- read.csv(gzfile(file.choose()), as.is = TRUE)
Run Code Online (Sandbox Code Playgroud)

得到:

  head(gz.file)
        farmNo.milk.energy.vet.cows
  1     1;862533;117894;21186;121
  2     2;605764;72049;43910;80
  3     3;865658;158466;54583;95
  4     4;662331;66783;45469;87
  5     5;1003444;101714;81625;125
  6     6;923512;252408;96807;135
Run Code Online (Sandbox Code Playgroud)

文件声称是data.frame,但不像一个,我在这里缺少什么?

 class(gz.file)
 [1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

一旦读入内存我想在纯csv文件中使用它,那么write.csv会是解决方案吗?

write.csv(gz.file, file="PATH")
Run Code Online (Sandbox Code Playgroud)

jan*_*cki 18

在最新版本的data.table快速 csv 阅读器中fread,支持 csv.gz 文件。它会根据文件名自动检测是否需要解压缩,因此没有太多新知识。以下应该有效。

library(data.table)
dt = fread("data.csv.gz")
Run Code Online (Sandbox Code Playgroud)

这个特性需要额外的,幸运的是轻量级的依赖,你可以在手册中读到?fread

如果安装了 R.utils 包,则支持以 .gz 和 .bz2 结尾的压缩文件。

要编写压缩参数,请使用fwrite(compress="gzip").


lib*_*orm 14

tidyverse,特别是该包,对压缩文件(以及其他一些文件readr具有透明支持gzip

library(readr)

read_csv("file.csv.gz") -> d

# write uncompressed data
d %>% write_csv("file.csv")
Run Code Online (Sandbox Code Playgroud)