我有一个包含以下数据的专栏:
尺寸:100x7
val =
USA
USA
France
USA
France
我想在饼图上显示数据。要做到这一点,我需要知道本专栏中有多少美国出现,等等
我读到了关于独特的功能,但是我没有成功
我想知道如何做到这一点。
谢谢。
答案 0 :(得分:4)
使用unique
的第三个输出,并确保这些输入字符串位于cell
数组中。 unique
的第三个输出非常酷,因为它为输入中看到的每个唯一数量分配了唯一的ID。因此,如果您有一个从a
到e
的字符序列,它将为它找到的每个唯一字符分配一个唯一的ID,介于1和5之间。此外,{的第一个输出{1}}为您提供一个数组,其中只包含输入中看到的唯一数量。
然后,您可以在第三个输出上使用accumarray
来计算您在列出的所有国家/地区中查看特定国家/地区的次数。
unique
我明白了:
val = {'USA'; 'USA'; 'France'; 'USA'; 'France'};
[countries,~,id] = unique(val);
counts = accumarray(id, 1);
同样适用于counts =
2
3
:
countries
请注意countries =
'France'
'USA'
的每个元素对应于您在counts
中看到与该国家位置相同的特定国家/地区的次数,因此法国被视为2次,美国被视为3次。< / p>
答案 1 :(得分: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)
答案 2 :(得分:0)
这将通过使用regexp:
为您提供出现次数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
现在有两个输出变量
unique_countries =
'France' 'USA'
count_unique_countries =
1 2
答案 3 :(得分:0)
如果您有统计工具箱,还可以执行以下操作:
valnom = nominal(val);
countries = getlabels(valnom);
occurrences = levelcounts(valnom);