Converting first column unique values to number

I have a table that I need to use for another function.
Currently the table is setup as
Base1,x,y,z
Base1,x,y,z
Building2,x,y,z
Building2,x,y,z
Complex3,x,y,z
Complex3,x,y,z
Complex3,x,y,z
What I would like to do is rename the first column if they have unique names so Base1 would switch to 1, Building2 switches to 2 ect...
Is there an easy way to rename all of the first column based on if the values are unique or not?

2 Comments

Keeping the same number or just 1:NoUnique values?
There isn't normally a number in the first colum, its actually A,B,C. I just want to convert any similar values in column 1 to numbers starting at 1:n.

Sign in to comment.

 Accepted Answer

Matt J
Matt J on 28 Jun 2019
Edited: Matt J on 28 Jun 2019
[~,~,u]=unique(yourTable{:,1},'stable');
yourTable{:,1}=num2cell(u)

4 Comments

Matt, this converted the first column to a cell. I can't seem to convert this back to a double...
The numbers are correct 1-3 however I can't use the numbers now for my next function and it seems you can't convert these back. I tried
yourTable(:,1) = cell2mat(yourTable{:,1}) however it says the right hand side of an assignment into a table must be another table or a cell array.
Rather than converting the double array to a cell array of scalar numerics and then converting that back to a duoble array, just don't use num2cell in the first place.
@Bewler,
To replace the column with variables of a different type, you need to use dot-indexing,
[~,~,u]=unique(yourTable{:,1},'stable');
yourTable.Var1=u;
where 'Var1' is the variable name for the column in the table.
Stephen. The issue is we have to convert due to the original input of Var1 of the table as a cell and we can't directly overwrite the variable with a double. I'm not familiar with dot-indexing but I'll explore this as well. Not too familiar with tables and why we can't easily overwrite the cell as a double.

Sign in to comment.

More Answers (0)

Products

Asked:

on 28 Jun 2019

Commented:

on 1 Jul 2019

Community Treasure Hunt

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

Start Hunting!