How to create a numerical variable from a string stored in a cell array ?
1 回表示 (過去 30 日間)
古いコメントを表示
I have a cell array that looks as follows:
countrycode = {'ALB';'ALB';'ALB';'ARG';'ARG';'BRA';'BRA';'BRA';'BRA'}
This is a short example, the list has about 50 countries, each with a different number of entries.
1. How can I create a numerical variable that assigns the value 1 to all 'ALB' entries, 2 to all 'ARG' entries, 3 to all 'BRA' entries and so on? 2. Is there a command akin to 'foreach' that would allow me to loop over all possible country codes? for instance, to extract data in a numerical variable associated with the variable countrycode?
採用された回答
Alexandra Harkai
2017 年 3 月 15 日
To get the numeric values:
country_idx = findgroups(countrycode);
For the second part, it really depends on what is it exactly you want to do. splitapply till likely be a helpful, for example, to count the number of entries within each country:
splitapply(@numel, countrycode, country_idx)
その他の回答 (1 件)
Rik
2017 年 3 月 15 日
You can use unique to generate the list of codes, followed by ismember to find out the locations, so the result is a vector.
countrycode = {'ALB';'ALB';'ALB';'ARG';'ARG';'BRA';'BRA';'BRA';'BRA'};
list=unique(countrycode);
[~,Locb] = ismember(countrycode,list);
To my knowledge there is no foreach command in Matlab, but you can use a for-loop to loop over all the possible values. I suspect what you want may also be achieved without a loop, but you'dd have to tell us more about what exactly you want to do.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!