gpt4 book ai didi

windows - R csv.bz2 Shell Windows 计算行数

转载 作者:可可西里 更新时间:2023-11-01 10:36:26 24 4
gpt4 key购买 nike

我在计算困惑的 csv.bz2 文件中的行数时遇到问题。

由于这是一个巨大的文件,我希望能够在使用 read.csv() 函数读取 bzip2 文件之前预先分配一个数据帧。

正如您在以下测试中看到的,我的结果变化很大,并且没有一个与 csv.bz2 文件中的实际行数相对应。

> system.time(nrec1 <- as.numeric(shell('type "MyFile.csv" | find /c ","', intern=T)))
user system elapsed
0.02 0.00 53.50
> nrec1
[1] 1060906
> system.time(nrec2 <- as.numeric(shell('type "MyFile.csv.bz2" | find /c ","', intern=T)))
user system elapsed
0.00 0.02 10.15
> nrec2
[1] 126715
> system.time(nrec3 <- as.numeric(shell('type "MyFile.csv" | find /v /c ""', intern=T)))
user system elapsed
0.00 0.02 53.10
> nrec3
[1] 1232705
> system.time(nrec4 <- as.numeric(shell('type "MyFile.csv.bz2" | find /v /c ""', intern=T)))
user system elapsed
0.00 0.01 4.96
> nrec4
[1] 533062

最有趣的结果是我称为 nrec4 的结果,因为它不花时间,而且它返回的行数大约是 nrec1 行数的一半,但我完全不确定直接乘以 2 是否可行。

我尝试了其他几种方法,包括 fread() 和 hsTableReader(),但前者崩溃,后者太慢,我什至不会进一步考虑。

我的问题是:

  1. 我可以使用哪种可靠的方法来计算 csv.bz2 文件中的行数?
  2. 直接在csv.bz2文件中使用公式计算行数可以不用解压吗?

提前致谢

迭戈

最佳答案

罗兰从一开始就是对的。
使用垃圾收集器时,性能提升的假象仍然存在。
我必须关闭重新启动 R 才能进行准确的测试。
是的,这个过程仍然快了几秒(红线),并且在使用nrows时,RAM 消耗的增加更加均匀。
但至少在这种情况下,不值得为 read.csv() 函数寻找优化。
它很慢,但它就是这样。
如果有人知道我感兴趣的更快方法。
fread() 崩溃以防万一。

谢谢。


没有nrows(蓝线)

Sys.time()
system.time(storm.data <- read.csv(fileZip,
header = TRUE,
stringsAsFactors = F,
comment.char = "",
colClasses = "character"))
Sys.time()
rm(storm.data)
gc()

带nrows(红线)

Sys.time()
system.time(nrec12 <- as.numeric(
shell('type "MyFile.csv.bz2" | find /v /c ""',
intern=T)))

nrec12 <- nrec12 * 2
system.time(storm.data <- read.csv(fileZip,
stringsAsFactors = F,
comment.char = "",
colClasses = "character",
nrows = nrec12))
Sys.time()
rm(storm.data)
gc()

Time spent comparison

Ram consumption comparison

关于windows - R csv.bz2 Shell Windows 计算行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com