读写大型csv ma​​tlab与r

时间:2015-03-18 18:11:51

标签: r matlab csv

我目前正在运行一个脚本,该脚本读取大约8500个csv文件(每个8.3mb),如果满足某些条件,则附加csv中的列。 csv文件仅包含数字,但标题和空格分隔。

我的R脚本使用fread,然后在使用write.table提高速度之前将数据表转换为矩阵。 运行2160个文件(大约17GB)的脚本导致3.8 GB的csv文件,大约需要3.2小时。每个文件的Fread需要3-4秒。

我正在考虑编写一个matlab脚本,因为我注意到matlab也有fread并且保存到mat格式可以节省时间。可以使用matlab显着减少读写csv的时间吗?

1 个答案:

答案 0 :(得分:3)

Matlab' fread与R&s完全无关。 R是一种先进的数据读取功能,能够处理结构化数据,如csv,Matlab是一个低级二进制文件阅读器,根本不用于处理文本数据,更不用说结构化文本数据。

不幸的是,Matlab的csv处理能力有限。如果您在Windows上并安装了Microsoft Office,那么它可以使用Excel来解析复杂的csv文件(尽管您可能会遇到有关它支持的行数或列数的限制)。如果没有,那么Matlab的应该处理csv文件的函数实际上都不能处理所有符合标准的csv文件,这意味着你很有可能必须写如果您的数据包含非数字数据,缺少数据,注释,引号等内容,则为您自己的csv解析器。

您可以在本文中找到有关此问题的更多详细信息:MATLAB can’t read plain text data out of a wet paper bag.