1

我有一个可能缺少数据的 CSV 文件,数据既是字符又是数字。处理这个问题的最佳方法是什么?

4

2 回答 2

5

这是一个例子:

文件.csv

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

读取MyCSV.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'
于 2011-08-09T14:57:27.713 回答
1

@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

于 2011-08-09T20:18:17.200 回答