Merge text and numeric formats to double
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
AR
am 21 Jan. 2017
Kommentiert: Walter Roberson
am 22 Jan. 2017
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 Kommentare
Akzeptierte Antwort
Guillaume
am 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 Kommentare
Walter Roberson
am 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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!