Removing rows except containing certain numbers of "33"
2 ビュー (過去 30 日間)
古いコメントを表示
Hello everybody,
I hope to keep the row with the containing certain numbers of "33" of the last two digits in 1st column of result.
and I hope to remove other rows.
the expecting answer is [133 1133; 2, 4] in this case. ()
I tried with
result(~ismember(result(:,1),'33'), :) = []; % It does not work.
result(~contains(string(result(:,1)),"33"), :) = []; % 332 also is included in result variable.
but it doest not work. 332 also is included in result variable.
Is there a way to check wheter last two digits meet the condition?
x = [103 133 1133 1344 332 105 1105 15 53 511]';
y = [1 2 4 5 7 2 1 8 10 1]';
result = [x,y];
% How to remove the rows except containing certain numbers of 1st column of result
% if I would like to keep the row with the "33" of the last two digits in 1st column of result,
% 133 and 1133 accept the condition. and 332 does not meet the condition.
% so the expecting result will be [133 2; 1133, 4]
result(~ismember(result(:,1),'33'), :) = []; % It does not work.
result(~contains(string(result(:,1)),"33"), :) = []; % 332 also is included in result variable.
1 件のコメント
Stephen23
2023 年 5 月 26 日
As Dyuman Joshi correctly wrote, mixing up text and numeric data will not help you.
Just stick to the numeric domain and use MOD or REM.
採用された回答
Hiro Yoshino
2023 年 5 月 26 日
You should use "pattern" to detect what you want in the strings as follows:
Your data:
x = [103 133 1133 1344 332 105 1105 15 53 511]';
y = [1 2 4 5 7 2 1 8 10 1]';
result = [x,y]
Define pattern
pat = "33";
TF = endsWith(string(result(:,1)),pat);
Extract what I want
result(TF,:)
Does this fit what you want to achieve?
その他の回答 (1 件)
Dyuman Joshi
2023 年 5 月 26 日
You are trying to compare numeric data with character data. You will have to convert your initial data to do that comparison.
Instead, just use rem() or mod()
x = [103 133 1133 1344 332 105 1105 15 53 511]';
y = [1 2 4 5 7 2 1 8 10 1]';
%Checking condition - last two digits correspond to 33
idx = rem(x,100)==33;
%Values corresponding to the condition
result = [x(idx)';y(idx)']
1 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!