MATLAB - лучший способ прочитать CSV с отсутствующими данными - PullRequest
1 голос
/ 09 августа 2011

У меня есть CSV-файл, в котором, возможно, отсутствуют данные, и данные состоят из символов и чисел. Как лучше всего с этим справиться?

Ответы [ 2 ]

5 голосов
/ 09 августа 2011

Вот пример:

file.csv

name,age,gender
aaa,20,m
bbb,25,
ccc,,m
ddd,40,f

readMyCSV.m

fid = fopen('file.csv','rt');
C = textscan(fid, '%s%f%s', 'Delimiter',',', 'HeaderLines',1, 'EmptyValue',NaN);
fclose(fid);
[name,age,gender] = deal(C{:});

Прочитанные данные:

>> [name num2cell(age) gender]
ans = 
    'aaa'    [ 20]    'm'
    'bbb'    [ 25]    '' 
    'ccc'    [NaN]    'm'
    'ddd'    [ 40]    'f'
1 голос
/ 10 августа 2011

То, что предложил @Amro, является наиболее распространенным способом чтения файла csv с пропущенными значениями. В вашем случае, поскольку ваши типы данных состоят из символов и цифр, вы должны указать правильный формат каждого столбца. Итак, ваша функция должна выглядеть примерно так:

C = textscan(fid, '%d32 %c %d8 %d8 %d32 %f32 %f %s ','HeaderLines', 1, 'Delimiter', ',');

, чтобы узнать больше форматов данных, смотрите здесь: http://www.mathworks.com/help/techdoc/ref/textscan.html

...