Change table variable data type
350 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Nikhil Tawakley
am 7 Jul. 2017
Kommentiert: yunyu Hu
am 5 Nov. 2020
I used readtable() to read a text file into a table. One of the columns of the table was read (by default) as a double rather than a string. How does one change a columns datatype within a table?
0 Kommentare
Akzeptierte Antwort
Sean de Wolski
am 7 Jul. 2017
Change it before reading it in by modifying the options passed to readtable.
Or
t.Var1 = num2str(t.Var1)
2 Kommentare
Peter Perkins
am 7 Jul. 2017
Without meaning to contradict Sean, num2str is almost certainly not what you want, at least not by itself. It is a very old function that creates a char matrix, which will likely be pretty awkward to work with. One possibility is to apply cellstr to that char matrix, another (if you're using a recent version of MATLAB) would be to convert using the string function (as in, string, the new class).
Weitere Antworten (2)
Jeffrey Daniels
am 4 Jun. 2020
fileName = table.xlsx;
opts = detectImportOptions(fileName);
opts.VariableTypes{15} = 'char'; % This will change column 15 from 'double' or whatever it is to 'char', which is what you want.
new_table = readtable(fileName,opts);
1 Kommentar
Peter Perkins
am 7 Jul. 2017
readtable also accepts a Format parameter that would allow you to override the automatic type detection.
4 Kommentare
Walter Roberson
am 29 Aug. 2017
No, it is not possible to copy-paste datatypes. However, you could use
old_class = arrayfun(@class, OldTable.VariableName, 'Uniform', 0);
new_variable = arrayfun(@(value, newclass) cast(value, newclass), NewTable.VariableName, old_class, 'uniform', 0);
NewTable.VariableName = new_variable;
This assumes that each entry in the variable is a potentially different type -- which would not be the case for numeric entries for example. If you have numeric entries, then
NewTable.VariableName = cast( NewTable.VariableName, class(OldTable.VariableName) );
Siehe auch
Kategorien
Mehr zu Tables finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!