2014-08-30 47 views
0

我正在使用Matlab代码(和工具箱)以静态和时间序列格式下载一些数据。这些代码分别在静态和时间序列的.csv文件中默认给出结果。尽管静态数据很好,但时间序列数据非常庞大,.csv文件不会加载所有数据。我尝试将输出文件扩展名更改为.dta,然后再更改.mat以便在Stata或Matlab中查看输出。此外,还尝试编写一个小循环,将加载到大型.csv文件中的数据拆分成同一文件中的两个工作表。但它们都没有成功。尽管我习惯于Matlab中的一些基本编码,但我对处理这种大型数据集是新手。任何对此的帮助将非常感激。 谢谢 - Veronica由Matlab生成的大型.csv文件的输出

+0

怎么办你的意思是'csv文件不加载所有数据'?它不包含所有的数据?你是在一个不支持2GB以上文件的Windows FAT32文件系统上吗?你的文件系统是否已满? csv包含多少行?你的输出文件有多大?按字节?并排队? (在Linux上使用'wc -l file.csv') – 2014-08-30 22:22:18

+0

csv包含所有数据,但由于行数有限,我无法查看csv文件中的所有数据。输出文件非常大,包含1135089行,并且csv文件显示1048576行。我无法查看其余的输出。在字节方面,该文件是80MB。试图查看完整输出的替代方法,但没有奏效。它看起来不像Windows文件系统问题。谢谢!-Veronica – Veronica 2014-08-31 15:40:59

+0

实际问题是什么?您拥有CSV中的所有数据,但您无法看到它 - 是吗?如果是这样,你用什么工具来尝试并查看它? – 2014-08-31 15:47:46

回答

0

如何使用VBScript的这两位将您的CSV文件分成两部分。在第一个输出文件(part1.csv)中将有599,999行,其余的在第二个文件(part2.csv)中。

保存为part1.vbs

Set fso = CreateObject ("Scripting.FileSystemObject") 
Set stdout = fso.GetStandardStream (1) 
LineNum=1 

Do While Not WScript.StdIn.AtEndOfStream 
    REM Read in next line of input 
    Line = WScript.StdIn.ReadLine() 
    If LineNum<600000 Then 
     stdout.WriteLine(Line) 
    End If 
    LineNum=LineNum+1 
Loop 

保存为part2.vbs

Set fso = CreateObject ("Scripting.FileSystemObject") 
Set stdout = fso.GetStandardStream (1) 
LineNum=1 

Do While Not WScript.StdIn.AtEndOfStream 
    REM Read in next line of input 
    Line = WScript.StdIn.ReadLine() 
    If LineNum>=600000 Then 
     stdout.WriteLine(Line) 
    End If 
    LineNum=LineNum+1 
Loop 

然后你可以在命令提示符下这样做是为了分割您的档案有两种:

cscript /nologo part1.vbs YourFile.CSV > part1.csv 
cscript /nologo part2.vbs YourFile.CSV > part2.csv 
+0

对此有任何好运? – 2014-09-08 17:40:48