Get the first row in a table with grouped data

Hi everyone, I want to know if there is a function which can get me a table with the first row that appears in grouped data. For example, I have this table:
key Date Height Weight
___ ____ ______ ______
4 56 34 12
21 45 123 23
21 40 67 133
45 49 64 119
45 45 12 12
The column date is already grouped in descending order.
I want to get a table with unique values for key but with the most recent date like this.
key Date Height Weight
___ ____ ______ ______
4 56 34 12
21 45 123 23
45 49 64 119
Please help

 Accepted Answer

dpb
dpb on 28 Mar 2019
Edited: dpb on 28 Mar 2019
[~,ig]=findgroups(D.key);
[~,ig]=ismember(ig,D.key);
results in:
>> D(ig,:)
ans =
3×4 table
key Date Height Weight
___ ____ ______ ______
4 56 34 12
21 45 123 23
45 49 64 119
>>

3 Comments

It works perfectly, Thanks!
How to get the last row per group in a similar situation ?
You could either sort by the column of interest descending or use find() with the reverse search instead of ismember with a loop construct.

Sign in to comment.

More Answers (0)

Categories

Commented:

dpb
on 14 Dec 2020

Community Treasure Hunt

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

Start Hunting!