複数のデータ型を含むセル配列の配列要素を検索する
44 views (last 30 days)
Show older comments
char型、numeric型、missingなど複数のデータ型を含むセル配列について、セル配列の要素の位置や数を取得したいです。
文字ベクトルのセル配列については検索方法があると分かったのですが、複数のデータ型を含むセル配列の要素を検索する方法が見つからなかったため質問させていただきます。
たとえば、以下のようなセル配列について(内容は質問用に作ったサンプルです)、
testcell = {missing,'売上(千個)','種類','りんご','りんご','みかん','ぶどう';...
missing,missing,'品種','ふじ','紅玉','せとか','巨峰';...
missing,'2018年',missing,23,13,13,8;...
missing,'2019年',missing,25,25,18,16;...
missing,'2020年',missing,25,13,20,24;...
missing,'2021年',missing,23,missing,25,25}
①[25]に一致するセルのそれぞれの位置を調べる
②'りんご'に一致するセルの数を数える
③'年'を含む文字列があるセルの数を数える
にはどうすればよいでしょうか?(無論、人力でのカウント以外でお願いします)
初歩的な質問で申し訳ございませんが、よろしくお願いいたします。
0 Comments
Accepted Answer
Hernia Baby
on 27 Sep 2022
Edited: Hernia Baby
on 27 Sep 2022
まずはデータを用意します
testcell = {missing,'売上(千個)','種類','りんご','りんご','みかん','ぶどう';...
missing,missing,'品種','ふじ','紅玉','せとか','巨峰';...
missing,'2018年',missing,23,13,13,8;...
missing,'2019年',missing,25,25,18,16;...
missing,'2020年',missing,25,13,20,24;...
missing,'2021年',missing,23,missing,25,25}
①[25]に一致するセルのそれぞれの位置を調べる
今回は25を数字としたまま判別します。
※追記:これも②の方法使えばうまくいきますね
A = testcell;
% A(cellfun(@ischar,A)) = {0};
% A(cellfun(@ismissing,A)) = {0};
A(cellfun(@(x) ~isnumeric(x) ,A)) = {0};
[r,c] = find(cell2mat(A)==25);
Arrange1 = [r,c]
②'りんご'に一致するセルの数を数える
ischarの否定を'(何もない文字)'に変換します。
B = testcell;
B(cellfun(@(x) ~ischar(x) ,B)) = {''};
strcmpで【りんご】と一致するものを1とし、足し合わせます。
S2 = sum(cellfun(@(x) strcmp(x,'りんご'),B),"all")
③'年'を含む文字列があるセルの数を数える
containsで【年】を含むものを1とし、足し合わせます。
S3 = sum(cellfun(@(x) contains(x,'年'),B),"all")
2 Comments
Akira Agata
on 27 Sep 2022
Edited: Akira Agata
on 28 Sep 2022
+1
% まずはデータを用意
testcell = {missing,'売上(千個)','種類','りんご','りんご','みかん','ぶどう';...
missing,missing,'品種','ふじ','紅玉','せとか','巨峰';...
missing,'2018年',missing,23,13,13,8;...
missing,'2019年',missing,25,25,18,16;...
missing,'2020年',missing,25,13,20,24;...
missing,'2021年',missing,23,missing,25,25};
% 1) 25に一致するセルの位置と数を調べる
idx_25 = cellfun(@(x) isequal(x, 25), testcell)
nnz(idx_25)
% 2) 'りんご'に一致するセルの位置と数を調べる
idx_apple = cellfun(@(x) isequal(x, 'りんご'), testcell)
nnz(idx_apple)
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!