从 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')

但这取决于您以后如何处理数据。