在R中读写csv.gz文件

时间:2013-12-16 11:25:49

标签: r gzip

关于这个主题有很多similar个问题,但非正确地处理了这个问题。

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

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

gz.file <- read.csv(gzfile(file.choose()), as.is = TRUE)

给出:

  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

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

 class(gz.file)
 [1] "data.frame"

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

write.csv(gz.file, file="PATH")

2 个答案:

答案 0 :(得分:2)

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

library(data.table)
dt = fread("data.csv.gz")

此功能需要额外的,幸运的是轻量级的依赖关系,您可以在?fread manual中阅读

  

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

关于编写压缩的csv,有pending Pull Request提供了该功能,因此我们可以期望快速的csv编写器fwrite可以使用它。

答案 1 :(得分:0)

tidyverse透明支持gzip压缩文件(以及一些others

library(tidverse)

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

# write uncompressed data
d %>% write_csv("file.csv")