Merge text and numeric formats to double
    1 view (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 Cell Arrays 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!
