standardizeMissing not working on all table columns

3 views (last 30 days)
I have a table which contains some columns of numbers, some columns of cells which contain multiple numbers, and some columns of strings.
I've attached a .mat file with a section of this table.
I've set certain values to 999, which I later want to change to NaN using the function 'standardizeMissing'. However, this function appears to work for all columsn except for one (column 15, called 'sheepCOM_transport').
This column appears to be a cell containing either 999 or an array of two values.
How can I replace the values of 999 with NaN in this column? Can standardizeMissing work with this column?
I've tried:
T = standardizeMissing(T.sheepCOM_transport, {999});
and
Tc = T.sheepCOM_transport;
Tc = cell2table(Tc);
Tc = standardizeMissing(Tc, 999);
T.sheepCOM_transport = Tc;
But these solutions dont seem to work.

Accepted Answer

Peter Perkins
Peter Perkins on 3 May 2019
standardizeMissing isn't designed to dig into arbitrary cell arrays. If "valid" values in that cell array are always two-element row vectors, then I'm gonna suggest that you turn those cell arrays into two-column matrices. I think in the long run you'll be happier.
>> c = {1:2; 999; 3:4; 999}
c =
4×1 cell array
{1×2 double}
{[ 999]}
{1×2 double}
{[ 999]}
>> missing = cellfun(@(x) isequal(x,999),c)
missing =
4×1 logical array
0
1
0
1
>> c(missing) = {[NaN NaN]}
c =
4×1 cell array
{1×2 double}
{1×2 double}
{1×2 double}
{1×2 double}
>> c = vertcat(c{:})
c =
1 2
NaN NaN
3 4
NaN NaN
OTOH, if the entries can be vectors of different sizes, then you are right to stick with a cell array.
  1 Comment
Centauri Jolene
Centauri Jolene on 8 May 2019
This is a better answer, since it results in a data format that is easier to work with in the long run. Thank you Peter.

Sign in to comment.

More Answers (1)

KSSV
KSSV on 29 Apr 2019
L = cellfun(@length,T.sheepCOM_transport) ;
T.sheepCOM_transport(L==1) = {NaN} ;

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!