Replace Nan with empty cell in table

47 visualizzazioni (ultimi 30 giorni)
Ratanjot
Ratanjot il 10 Feb 2023
Modificato: dpb il 14 Feb 2023
I have created a table by concatenating two columns together as it runs row by row in a for loop. The output is as shown in the command window. How can I replace the 'Nan' with an empty cell value. I don't want to get rid of it because for that I can use the rmmissing function. I want to have that cell to remain empty so that when it's outputted as a final table it creates the spaces in between numbers.

Risposta accettata

dpb
dpb il 10 Feb 2023
Modificato: dpb il 14 Feb 2023
No can do unless convert the table variables to cell arrays; a double array cannot have anything other than numeric values. A MATLAB table data structure is NOT a spreadsheet although it superficially appears somewhat akin to one...
a=randi([2000 6999],12,1); a(2:2:end)=nan; b=a+1; % some very roughly similar data...
tT=table(a,b) % turn into a table
tT = 12×2 table
a b ____ ____ 5993 5994 NaN NaN 3312 3313 NaN NaN 6881 6882 NaN NaN 6714 6715 NaN NaN 2698 2699 NaN NaN 5345 5346 NaN NaN
illustrates don't need a loop nor concatenation to do the first step...
If it really, really, really were important to not have the NaN values showing, one would have to do something like
a=string(a); b=string(b); % turn into nonumeric representations of numbers
a(ismissing(a))=""; b(ismissing(b))=""; % use blanks instead of <missing> indicator
tT=table(a,b)
tT = 12×2 table
a b ______ ______ "5993" "5994" "" "" "3312" "3313" "" "" "6881" "6882" "" "" "6714" "6715" "" "" "2698" "2699" "" "" "5345" "5346" "" ""
is rough equivalent of the cell route; a string array can be the null string rather than missing. MATLAB will then display the double-quotes around the values as the visual type indication in the command window.
You would have to fprintf the values with formatting string to get them to look differently.
The cellstr route would be the same idea; it displays "the curlies" around cell values...
tT=addvars(tT,cellstr(tT.a),'After','b','NewVariableName','c')
tT = 12×3 table
a b c ______ ______ __________ "5993" "5994" {'5993' } "" "" {0×0 char} "3312" "3313" {'3312' } "" "" {0×0 char} "6881" "6882" {'6881' } "" "" {0×0 char} "6714" "6715" {'6714' } "" "" {0×0 char} "2698" "2699" {'2698' } "" "" {0×0 char} "5345" "5346" {'5345' } "" "" {0×0 char}

Più risposte (0)

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by