How to use fillmissing function within a group ?

4 views (last 30 days)
I have a table where multiple columns have NaN and I want the NaN to be replaced by the previous valid value in the column, within the group(by ID.
T =
ID amount1 amount2
15 200 300
15 NaN 800
15 NaN NaN
67 NaN 300
67 400 700
67 NaN NaN
Expected output:
ID amount1 amount2
15 200 300
15 200 800
15 200 800
67 NaN 300
67 400 700
67 400 700
I am able to achieve this partially using fillmissing function as:
Tupdated = fillmissing(T,'previous');
But I want to implement this within group (by ID). I am unable to use fillmissing with splitapply correctly.

Accepted Answer

dpb
dpb on 11 Dec 2020
>> varfun(@(x) fillmissing(x,'previous'),T,'groupingvariables',{'ID'},'InputVariables',{'amount1','amount2'})
ans =
6×4 table
ID GroupCount Fun_amount1 Fun_amount2
__ __________ ___________ ___________
15 3 200 300
15 3 200 800
15 3 200 800
67 3 NaN 300
67 3 400 700
67 3 400 700
>>

More Answers (0)

Community Treasure Hunt

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

Start Hunting!