我有一个包含数字,日期和文字的CSV文件。我必须提取包含文本的列。
例如,示例csv文件看起来像
1-1-2000,1,2.3,TRUE
2-1-2000,1,2.3,FALSE
我想提取包含TRUE / FALSE值的列。
我想将TRUE转换为1,将FALSE转换为0。
请建议一些功能和示例代码来执行此操作
答案 0 :(得分:2)
你可以试试这个:
[~,~,~,bools] = textread('filename.csv', '%s%d%f%s', 'delimiter', ',');
bools = cellfun(@strtrim, bool, 'uniformoutput', false);
bools = strcmp(bools, 'TRUE');
如果您事先知道从不存在任何尾随空格,则可能不需要strtrim
行。带有strcmp
的行为所有与字面值TRUE
进行字符串比较的条目输出逻辑数组,这意味着所有其他条目都为false 。含义:
1-1-2000,1,2.3,TRUE
2-1-2000,1,2.3,BANANAS
将生成相同的逻辑向量。如果您还想明确地与字符串文字FALSE
进行比较,请使用以下内容:
a = NaN(size(bools));
a(strcmp(bools, 'TRUE')) = 1;
a(strcmp(bools, 'FALSE')) = 0;
if ~any(isnan(a))
bools = logical(a);
clear a
else
%# handle the error
end