Create index vector from grouping variable
2 次查看(过去 30 天)
显示 更早的评论
I am using grp2inx command to convert categorical data into numbers that I can find correlation between the variables. When matlab index them automatically, it substitute the categories based on their order in the table. In other words {'No Damage'} {'Destroyed'} {'1-9%'} {'10-25%'} {'51-75%'} {'26-50%'} are replaced with 1 2 3 4 5 6, respectively. I want to replace them meaningfully; 1 instead of {'No Damage'}, 2 instead of {'1-9%'} ......and 6 instead {'Destroyed'}. How can I do that? Here is what I use, but doesnt work
gL1={'No Damage','1-9%','10-25%','26-50%','21-75%','Destroyed'};
[g1,gN1,gL1] = grp2idx(Table.Damage_rate);
Thank you
0 个评论
采纳的回答
dpb
2018-10-11
编辑:dpb
2018-10-11
gr2idx is used with the Statistics Toolbox implementation of a categorical variable type. Unfortunately, while it was useful and ahead of the ultimate native categorical data type later introduced, it is now deprecated and use is discouraged.
Use the base categorical data type and findgroups combined with splitapply to process table data by groups:
gL1={'No Damage','1-9%','10-25%','26-50%','21-75%','Destroyed'};
gC1=categorical(gL1,gL1,'ordinal',1); % create ordinal categorical variable with names given
>> [g,id]=findgroups(gC1) % find the groups and the group id associated with...
g =
1 2 3 4 5 6
id =
1×6 categorical array
No Damage 1-9% 10-25% 26-50% 21-75% Destroyed
>>
ADDENDUM
Hmmm...I thought the computational routines ought to have been amended to handle ordinal categorical variables but apparently that was a unwarranted assumption.
To get the numeric values, just use
Table.Damage=double(Table.Damage_rate);
once you've created the categorical variable--make a new variable for it; no sense in destroying the other.
5 个评论
dpb
2018-10-12
See the addendum/update to the Answer I posted last night...convert the string variables to ordinal categorical variables as shown initially then double().
There's "no change" in the above because you didn't assign the results to anything, but that's the harder and less pleasing way; the character strings are categorical variables; use the facility Matlab provides for the purpose.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Categorical Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!