Effacer les filtres
Effacer les filtres

How to convert all the cell in a columns from char to string

58 vues (au cours des 30 derniers jours)
I have a table that contains char columns and double columns. I want to keep the same format but convert all the char into string to do some operation after.
'ABc' 'XYZ'
To : "ABC" "XYZ"

Réponse acceptée

Guillaume
Guillaume le 7 Sep 2017
Hum! it's not actually that easy as you can't use the syntax yourtable(:, somecolumns) to change the type of the column from cell array to string.
Option 1: use . indexing over the char columns
for columnname = yourcharcolumnnames %where yourcharcolumnnames is a cell array of the char column names
yourtable.(columnname{1}) = string(yourtable.(columnname{1}));
end
Option 2: create an auxiliary function for varfun that can take any column type
function column = convertcolumn(column)
if iscell(column) && ~isempty(column) && ischar(column)
column = string(column);
end
end
which you use with varfun:
newtable = varfun(@convertcolumn, yourtable);
  1 commentaire
Marie-Claude Boisvert
Marie-Claude Boisvert le 7 Sep 2017
Option1 Work,:) I will specified my columns and its good :D Thanks a lot
Option2 run but the columns are still char

Connectez-vous pour commenter.

Plus de réponses (1)

Image Analyst
Image Analyst le 7 Sep 2017
This will do it:
% Set up
c = {'ABc'; 'XYZ'}
d = rand(2,1)
t = table(c, d, 'VariableNames', {'letters', 'numbers'})
% Now begin.
% First extract existing letters column of chars into a cell array.
cColumn = t{:, 'letters'}
% Convert char column to strings.
sColumn = string(cColumn)
% Make that into a table of strings with the same variable name, "strings"
st = table(sColumn, 'VariableNames', {'letters'})
% Delete existing char column.
t(:, 'letters') = []
% Add this column to the table in the same place as the char column was.
t = [st, t]

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by