如何动态表名称大量高?

2视图(30天)
任何跳跃和说它之前,我阅读的所有反应说为什么你不应该在Matlab动态名称表。
我有大约2000 csv文件,每超过1米的记录,我需要打破记录从每个文件到个人表中根据分类名称的列每一个csv文件(大约有6000个不同的分类名称)。我想名称表基于分类的名称。
如果我试着将他们分解成结构领域,很快就会过载,结构和加载/保存它实际上要花费几个小时,结构,和年龄与结构,是不现实的,我真的只是想与每个类别。
我想尝试使用高表,因为一旦我整理这些文件,有些表应该有几百万行,而其他人可能有几千。
请让我知道如果你有任何建议,有效地将数据分解成单独的表和动态命名这些表格,我将忽略任何评论这条路只是初学者,如何不知道任何关于编码。
3评论
海莉罗杰斯
海莉罗杰斯 2022年11月1日
是的,csv文件都是相似的,我写代码来将它们导入Matlab,但我只是需要一种方法来打破他们的股票名称。
具体地说,我有原始的选择数据在过去的20年里,我和附加的样本csv域包括三个基本符号和只是一个source 10/31/2022快照。然而,这些包括每日快照选项数据从近6000行情,和我有一个这些日常原始文件回到2000年。
我想创建单个表的选项为每个订单历史,和名称的表底层的符号名。
这也是为什么我在想我需要使用高表,因为就像间谍的原料选择历史将是疯狂大可以追溯到20年....
谢谢你! !

登录置评。

接受的答案

大卫•希尔
大卫•希尔 2022年11月1日
这应该读一次所有表,结合相同的分类名称,并存储新表的分类名称。
d = dir (‘* . csv‘);%假设所有文件一起在相同的文件夹中
s =大小(d, 1);
k = 1: s
r = readtable (d (k) . name);
catnams = r.Properties.VariableNames;
m = 1:长度(catnams)
试一试
R = readtable ([catnams {m},. csv”]);
R = [(: 1); R (:, m)];
writetable (R, [catnams {m},“csv”]);%不确定如果你想保存为.mat文件或. csv
R = R (:, m);
writetable (R, [catnams {m},“csv”]);%不确定如果你想保存为.mat文件或. csv
结束
结束
结束
2的评论
海莉罗杰斯
海莉罗杰斯 2022年11月2日
编辑:海莉罗杰斯 2022年11月2日
@David山 ——我重写代码,这工作我需要什么!谢谢! ! !
cd 历史' D: \ \ CSV \股票期权和股票数据的
opts1 = delimitedTextImportOptions ( “NumVariables” 8);
opts1。DataLines =(2,正);
opts1。分隔符= ”、“ ;
opts1。VariableNames = [ “UnderlyingSymbol” , “DataDate” , “开放” , “高” , “低” , “关闭” , “体积” , “Adj_Close” ];
opts1。VariableTypes = [ “分类” , “datetime” , “单身” , “单身” , “单身” , “单身” , “单身” , “单身” ];
opts1。ExtraColumnsRule = “忽略” ;
opts1。EmptyLineRule = “读” ;
opts1 = setvaropts (opts1, “UnderlyingSymbol” , “EmptyFieldRule” , “汽车” );
opts1 = setvaropts (opts1, “DataDate” , “InputFormat” , “MM / dd / yyyy” );
stock_folder = dir ( ‘* . csv‘ ); %假设所有文件一起在相同的文件夹中
stock_folder_size =大小(stock_folder, 1);
k = 1: stock_folder_size
抽搐
table_daily = readtable (stock_folder (k) . name, opts1);
catnames =独特(table_daily (:, “UnderlyingSymbol” ), “排序” );
parfor m = 1:高度(catnames)
table_symbol_rows = (table_daily。UnderlyingSymbol = = catnames {m, 1});
table_symbol_new = table_daily (table_symbol_rows:);
filename_symbol = sprintf ( “% s_raw_stock.csv” catnames {m, 1});
filename_symbol_mat = sprintf ( “% s_raw_stock” catnames {m, 1});
试一试
table_symbol = OVM_Read_Table (filename_symbol opts1);
table_symbol = vertcat (table_symbol table_symbol_new);
OVM_Write_Table (table_symbol filename_symbol);
table_symbol = table_symbol_new;
OVM_Write_Table (table_symbol filename_symbol);
结束
结束
toc
结束

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!