关于这个主题有很多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")
答案 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")