我正在使用包含以下格式信息的CSV文件:
col1 col2 col3
row1 id1 , text1 (year1) , a|b|c
row2 id2 , text2 (year2) , a|b|c|d|e
row3 id3 , text3 (year3) , a|b
...
CSV中的行数非常大。这些年份嵌入括号中的col2中。另外,可以看出col3可以有不同数量的元素。
我想高效地阅读CSV文件并以数组结束每个项目(id),如下所示:
对于ID为#_i的'item'
A = [id_i,text_i,year_i,101010001]
如果col3中的所有可能特征都是[a,b,c,d,....,z],则二元向量显示其存在与否。
我对在MATLAB中有效实现这一点很感兴趣。想法非常受欢迎。谢谢
答案 0 :(得分:1)
我想将我发现的内容添加为读取CSV文件的最快方法之一:
这将允许您读取数字和非数字数据,但它假定有一些标题行。您可以将标题行的数量作为输入参数输入importdata()
,也可以让它自己尝试...它过去不适用于我的用途。
对于我来说,这比xlsread()
快得多,在那里花了六分之一的时间来阅读6倍大的东西!
如果您只阅读数字数据,则可以使用csvread()
- 实际使用dlmread()
。
事实上,大约有10种方法可以读取这些文件,它实际上不仅取决于你的目标,还取决于文件内容。
答案 1 :(得分:0)
您可以使用T = readtable(filename)
。这样就可以选择'ReadVariableNames',它将第一行作为标题,将'ReadRowNames'作为行变量。