次のデータを含む列があります:
サイズ: 100x7
val =
USA
USA
France
USA
France
データを円グラフで表示したい。これを行うには、この列に USA がどれくらい含まれているかを知る必要があります。
関数 unique,accumarray について読みましたが、成功
しませんでした。その方法についていくつか提案をしたいと思います。
ありがとう。
次のデータを含む列があります:
サイズ: 100x7
val =
USA
USA
France
USA
France
データを円グラフで表示したい。これを行うには、この列に USA がどれくらい含まれているかを知る必要があります。
関数 unique,accumarray について読みましたが、成功
しませんでした。その方法についていくつか提案をしたいと思います。
ありがとう。
の 3 番目の出力を使用しunique
、それらの入力文字列がcell
配列内にあることを確認します。の 3 番目の出力はunique
、入力に見られる一意の数量ごとに一意の ID を割り当てるため、非常に優れています。a
そのため、 からまでの一連の文字がある場合、e
見つかった一意の文字ごとに 1 ~ 5 の一意の ID が割り当てられますunique
。入力で。
次にaccumarray
、この 3 番目の出力で を使用して、リストされているすべての国で特定の国が表示された回数をカウントできます。
val = {'USA'; 'USA'; 'France'; 'USA'; 'France'};
[countries,~,id] = unique(val);
counts = accumarray(id, 1);
私は得る:
counts =
2
3
またのためにcountries
:
countries =
'France'
'USA'
の各要素はcounts
、特定の国が の国と同じ位置にある回数に対応していることに注意してくださいcountries
。したがって、フランスは 2 回、米国は 3 回表示されます。
unique
で使用できますhistc
-
%// Get countries and their occurences
[countries,~,id] = unique(cellstr(val),'stable')
occurrences = histc(id,1:max(id))
次に、国名に対する出現数を表として表示できます-
>> table(countries,occurrences)
ans =
countries occurrences
_________ ___________
'USA' 3
'France' 2
出力を円グラフとして表示-
>> pie(occurrences,countries)
これにより、正規表現を使用して出現回数が得られます。
unique_countries = unique(regexp(val,'^.*$','lineanchors','match','dotexceptnewline'));
count_unique_countries = zeros(size(unique_countries));
for ii = 1:numel(unique_countries)
count_unique_countries(ii) = numel(regexp(val,['^' unique_countries{ii} '$'],'lineanchors'));
end
2 つの出力変数は次のようになります。
unique_countries =
'France' 'USA'
count_unique_countries =
1 2
統計ツールボックスがある場合は、次の操作も実行できます。
valnom = nominal(val);
countries = getlabels(valnom);
occurrences = levelcounts(valnom);