从 Matlab 中的 csv 中获取适当大小的 table
Obtain a table of proper size from a csv in Matlab
我正在尝试从 Matlab 中的 csv 文件中获取 table。该文件位于以下位置 link:http://vincentarelbundock.github.io/Rdatasets/csv/carData/SLID.csv
fid = fopen('SLID.csv', 'r');
C = textscan(fid, '%s %f %f %d %s %s', 'Delimiter', ',', ...
'headerLines', 1, 'TreatAsEmpty','NA');
fclose(fid);
T = cell2table(C,...
'VariableNames',{'id' 'wages' 'education' 'age' 'sex' 'language'});
whos T
但是通过这种方式我获得了一个 1x6 table,其中每个元素都是一个大小为 7425x1 的单元格。如何获得 7425x6 table?
你可以使用table命令得到你想要的table:
T = table(C{1},C{2},C{3},C{4},C{5},C{6})
之后,您可以使用 table 属性设置列名:
T.Properties.VariableNames{'Var2'} = 'wages';
等等
此外,您可能希望使用 %q 说明符导入数据,这将在从文件中读取值时删除双引号:
C = textscan(fid, '%q%f%f%d%q%q', 'Delimiter', ',',...
'headerLines', 1, 'TreatAsEmpty','NA')
但这取决于您以后如何处理数据。
我正在尝试从 Matlab 中的 csv 文件中获取 table。该文件位于以下位置 link:http://vincentarelbundock.github.io/Rdatasets/csv/carData/SLID.csv
fid = fopen('SLID.csv', 'r');
C = textscan(fid, '%s %f %f %d %s %s', 'Delimiter', ',', ...
'headerLines', 1, 'TreatAsEmpty','NA');
fclose(fid);
T = cell2table(C,...
'VariableNames',{'id' 'wages' 'education' 'age' 'sex' 'language'});
whos T
但是通过这种方式我获得了一个 1x6 table,其中每个元素都是一个大小为 7425x1 的单元格。如何获得 7425x6 table?
你可以使用table命令得到你想要的table:
T = table(C{1},C{2},C{3},C{4},C{5},C{6})
之后,您可以使用 table 属性设置列名:
T.Properties.VariableNames{'Var2'} = 'wages';
等等
此外,您可能希望使用 %q 说明符导入数据,这将在从文件中读取值时删除双引号:
C = textscan(fid, '%q%f%f%d%q%q', 'Delimiter', ',',...
'headerLines', 1, 'TreatAsEmpty','NA')
但这取决于您以后如何处理数据。