Return rows (not just row number)

Hello
I would be happy if anyone could help me with following problem.
I have an text (or excel) file which is in the following form (or course in reality it is in larger form but anyway the basic idea is):
And now I would like to find all the 'Cat'-rows and return that row and the following row.
So in the end my answer should be
And I don't even know how to begin. Could anyone help?

 採用された回答

Ingrid
Ingrid 2016 年 1 月 29 日

1 投票

just use strfind or strcmp to find the indices
varNames = var(:,1);
IndexC = strfind(varNames, 'Cat');
Index = find(not(cellfun('isempty', IndexC)));
Index = sort([Index; Index+1]);
extracted = var(Index,:);

その他の回答 (3 件)

Walter Roberson
Walter Roberson 2016 年 1 月 29 日

2 投票

match = ismember(var(:,1), 'Cat');
extended_match = match | [true; match(1:end-1)]; %row and following row; and also header
extracted = var(extended_match, :);
Snowfall
Snowfall 2016 年 1 月 29 日
編集済み: Snowfall 2016 年 1 月 29 日

0 投票

Thank you, these help me a lot :)
But it also raised a new question... What should I do if i want to find a word which contains word 'Cat'. For example in that table (above) I would have words 'TigerCat' and 'LionCat' instead of just 'Cat' (like in previous question) and I would like to return all rows which contains 'Cat'?
Is Matlab capable of doing that?

2 件のコメント

Walter Roberson
Walter Roberson 2016 年 1 月 30 日
Ingrid's strfind solution will find 'Cat' anywhere in the string. It is, though, case sensitive. If you want a case-insensitive solution then you could use Ingrid's solution modified slightly to
IndexC = strfind(lower(varNames), lower('Cat'));
The function I used, ismember(), does not extend to locating strings within other strings. I would probably modify my solution to
match = ~cellfun(@isempty,regexpi(varNames,'Cat'));
Snowfall
Snowfall 2016 年 2 月 3 日
Thank you for your answer. I begin to try these in practice.

サインインしてコメントする。

Snowfall
Snowfall 2016 年 2 月 5 日

0 投票

How about a case where I would like to find all words which do not include 'Cat' or 'Guinea pig'?

2 件のコメント

Ingrid
Ingrid 2016 年 2 月 5 日
it is better if you make a new question for this as this one already has an accepted answer so you are less likely to get an answer but here goes:
varNames = var(:,1);
IndexCat = strfind(varNames, 'Cat');
Index1 = find(not(cellfun('isempty', IndexCat)));
IndexPig = strfind(varNames,'Guinea pig');
Index2= find(not(cellfun('isempty',IndexPig)));
Index =~(Index1|Index2);
Index = sort([Index; Index+1]);
extracted = var(Index,:);
Snowfall
Snowfall 2016 年 2 月 7 日
編集済み: Snowfall 2016 年 2 月 7 日
Ok, thank you for your answer. Next time I'll write a new question :)

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeText Analytics Toolbox についてさらに検索

タグ

質問済み:

2016 年 1 月 29 日

編集済み:

2016 年 2 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by