我有一个包含数字、日期和文本的 CSV 文件。我必须提取包含文本的列。
例如,示例 csv 文件看起来像
1-1-2000,1,2.3,TRUE
2-1-2000,1,2.3,FALSE
我想提取包含 TRUE/FALSE 值的列。
我想将 TRUE 转换为 1,将 FALSE 转换为 0。
请建议一些功能和示例代码来执行此操作
你可以试试这个:
[~,~,~,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