How to replace string by double in cell array

10 visualizaciones (últimos 30 días)
Gregory Wurtz
Gregory Wurtz el 19 de Mayo de 2020
Comentada: Gregory Wurtz el 20 de Mayo de 2020
I am importing an Excel file in Matlab using the readtable command. For some reason, one collumn in the dataset does not load as doubles (all number columns are identically formatted in the Excel file as much as I can tell) but as string characters:
prompting the deficient column:
>>T{3,1}{:,14}
ans =1699×1 cell array
I need to replace the strings in T{3,1}{:,14} with doubles.
The following command returns an error:
>> T{3,1}{:,14}=str2double(T{3,1}{:,14})
Conversion to cell from double is not possible.
If is use:
T{3,1}{:,14}=num2cell(str2double(T{3,1}{:,14}))
the content of the column is no longer a double.
Do you have a solution to this (seemingly trivial) problem?
Thanks
  2 comentarios
Walter Roberson
Walter Roberson el 19 de Mayo de 2020
Would it be possible for you to upload the file for testing?
Gregory Wurtz
Gregory Wurtz el 19 de Mayo de 2020
Here is the file with some example columns. The deficient data is in column cc.

Iniciar sesión para comentar.

Respuesta aceptada

Sulaymon Eshkabilov
Sulaymon Eshkabilov el 19 de Mayo de 2020
D1D=readtable('test.xlsx');
D1D.cc=str2double(D1D.cc);
  2 comentarios
Sulaymon Eshkabilov
Sulaymon Eshkabilov el 19 de Mayo de 2020
if you need to remove NaN's, use:
Index=isnan(D1D.cc);
D1D.cc(Index)=0;
% similarly for other columns ...
Gregory Wurtz
Gregory Wurtz el 19 de Mayo de 2020
Thank you. This works great!

Iniciar sesión para comentar.

Más respuestas (2)

Sulaymon Eshkabilov
Sulaymon Eshkabilov el 19 de Mayo de 2020
use a command: double()
To get back your strings use the command: char()
  1 comentario
Gregory Wurtz
Gregory Wurtz el 19 de Mayo de 2020
I am not sure how this solves my problem: I would like to replace the string in the cell array with doubles. I included the data in the feed above.
Thanks for your help.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 19 de Mayo de 2020
filename = 'test.xlsx';
opt = detectImportOptions(filename);
opt = setvaropts(opt, 3, 'Type', 'double');
T = readtable(filename, opt);
  5 comentarios
Walter Roberson
Walter Roberson el 19 de Mayo de 2020
I tested on your sample file before posting. This code fixes the readtable so that it loads as numeric in the first place avoiding the cell
Gregory Wurtz
Gregory Wurtz el 20 de Mayo de 2020
Thanks Walter.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Import from MATLAB en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by