Conversion of Categorical to double

89 views (last 30 days)
Lui
Lui on 1 May 2019
Edited: Lui on 1 May 2019
Hello everyone'
I have a table with values created with a categorization that I do not know. I would like to convert these into double array for normal manipulation. However, the following code gives me a categorical array that cannot be manaipulated easily by normal operations.
y=table2array(Data(:,1));
Converting it into a double, it yield values that are not the same as what is contained in the table.
y1=grp2idx(y);
Can someone please explain what the vector y1 represents and how I can use that to get the double array that is not categorical.
thanks.

Accepted Answer

dpb
dpb on 1 May 2019
Edited: dpb on 1 May 2019
y1 is a grouping variable of which bin each refers to; it will be in the range of 1:N where N is number of unique categories in the categorical variable (not all of which may be present in a subset of the original).
Just
v=double(Data(:,1));
will reproduce the underlying values of the categorical array.
But, what do you want to do with a categorical array that you can't seem to do as its existing type? One would presume it was created as categorical for a reason.
  2 Comments
Lui
Lui on 1 May 2019
I have attached a table below. The table created as categorical. I need to create an array that can be multiplied or divided etc.
Data_1=table2array(Data(:,1)); % this gives me the catrogorical array
% this array cannot be multilied by a factor as a double array
v=double(Data_1(:,1)); % this gives me the unique categories
How do I retrieve a double array from the table which has categories so that I can have the same values as what is in the table but not categorical.
OR
How do I carry out a simple arithmetic operation like multiplcation on the categorical array? And can it be converted to a double array.
dpb
dpb on 1 May 2019
How was that .mat file created to turn Column7 variable into categorical? I'd suggest going back to that step and fix your problem there--it does appear that those should have been doubles all along.

Sign in to comment.

More Answers (1)

dpb
dpb on 1 May 2019
To answer the question posed,
Data.Column7=double(Data.Column7);
but see the comment above -- the better solution would be to fix the problem at the point it was created instead of cleaning up a mess later.
  1 Comment
Lui
Lui on 1 May 2019
Edited: Lui on 1 May 2019
Thank you for the guidance. I have resolved it from the initial file. I did convert the excel file to string while importing it to matlab. Then I cahnged the file into a double.This excluded the categorical part. I appreciate.

Sign in to comment.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!