Merge text and numeric formats to double
3 views (last 30 days)
Show older comments
Does anyone know how to combine text and numeric formats into double or matrix form?
I have two data sets:
A is a 1x500 table. A 1x5 example of data in the following format:
A={'aapl' 'abbv' 'abc' 'abt' 'ace'};
A=cell2table(A);
B is a 6322 x 500 table. A 3x5 example in following format:
B={12.4949 6.96103 NaN 7.03814 13.0399...
12.5195 7.02181 NaN 7.39418 12.7675...
12.7307 7.21876 NaN 7.75691 12.6901};
B=cell2table(B);
Would like to concatenate A to B, as C, in a double format for analysis and comparisons so C would look like
C=
aapl abbv abc abt ace
12.4949 6.96103 NaN 7.03814 13.0399
12.5195 7.02181 NaN 7.39418 12.7675
12.7307 7.21876 NaN 7.75691 12.6901
I've tried concantenating cells
A=table2cell(A);
B= table2cell(B);
C=[A;B];
and I get following error...
"All contents of the input cell array must be of the same data type."
Tried converting B to double, A to categorical then concantenating
A=categorical(A);
B= table2array(B);
C=[A;B];
and I get following error...
"Can not concatenate a double array and a categorical array."
Tried many other combos but nothing seems to work? Thank you for any suggestions.
AR
0 Comments
Accepted Answer
Guillaume
on 21 Jan 2017
If B is really declared as
B={12.4949 6.96103 NaN 7.03814 13.0399...
12.5195 7.02181 NaN 7.39418 12.7675...
12.7307 7.21876 NaN 7.75691 12.6901};
with the ... at the end of each line which makes it a row vector cell array, then
C = [A; reshape(B, [], size(A, 2))]
If B were declared
B={12.4949 6.96103 NaN 7.03814 13.0399
12.5195 7.02181 NaN 7.39418 12.7675
12.7307 7.21876 NaN 7.75691 12.6901};
then it would just be:
C = [A;B]
However, I would not recommend a mix of string and numbers in the cell array, it just makes it harder to use. Assuming that these strings are just column header:
C = cell2table(B, 'VariableNames', A)
would be a lot better.
2 Comments
Walter Roberson
on 22 Jan 2017
You can extract a particular column as double by using dot notation,
MyTable.TheVariable
You can also extract portions of the table as double by using {} notation,
MyTable{3:21, :} %rows 3 to 21, all columns
More Answers (0)
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!