我有一个可能缺少数据的CSV文件,数据是字符和数字 . 处理这个问题的最佳方法是什么?
这是一个例子:
name,age,gender aaa,20,m bbb,25, ccc,,m ddd,40,f
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'
@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
2 回答
这是一个例子:
file.csv
readMyCSV.m
数据如下:
@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