0

数字、日付、テキストを含む CSV ファイルがあります。テキストを含む列を抽出する必要があります。

たとえば、サンプル csv ファイルは次のようになります。

1-1-2000,1,2.3,TRUE    
2-1-2000,1,2.3,FALSE
  1. TRUE/FALSE 値を含む列を抽出したいと考えています。

  2. TRUE を 1 に、FALSE を 0 に変換したい。

これを行うための関数とサンプルコードを提案してください

4

1 に答える 1

2

これを試すことができます:

[~,~,~,bools] = textread('filename.csv', '%s%d%f%s', 'delimiter', ',');

bools = cellfun(@strtrim, bool, 'uniformoutput', false);
bools = strcmp(bools, 'TRUE');

strtrim末尾にスペースがないことが事前にわかっている場合は、 with の行は必要ないかもしれません。の行はstrcmp、literal と文字列比較するすべてのエントリの論理配列を出力します。これは、他のすべてのエントリが falseTRUEであることを意味します。意味:

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
于 2012-10-08T05:03:26.930 に答える