我想计算每个唯一ID有多少个'负'单元格。我哪里做错了?然后我想显示有多少ID有一个或多个阴性计数,有多少ID有三个或三个以上的阴性计数。
我代码:
clc
clear
close all
data = {
'vajbfch07wu11y90' 'negative'
'ekvpmhqybu920hnr' 'negative'
'eddbdv5bsqggeydq' 'negative'
'eddbdv5bsqggeydq' 'negative'
'eddbdv5bsqggeydq' 'negative'
'eddbdv5bsqggeydq' 'negative'
'eddbdv5bsqggeydq' 'negative'
'eddbdv5bsqggeydq' 'negative'
'6vmhbj7041fe7xck' 'negative'
'6vmhbj7041fe7xck' 'negative'
'6vmhbj7041fe7xck' 'negative'
'6vmhbj7041fe7xck' 'negative'
'j5d6dgzbeynyyg02' 'negative'
'j5d6dgzbeynyyg02' 'negative'
'j5d6dgzbeynyyg02' 'negative'
'v21tstcp164uya6g' 'negative'
'v21tstcp164uya6g' 'negative'
'brjmfpunj00rn92c' 'negative'
'brjmfpunj00rn92c' 'negative'
'mb8nggnegcwq9nqc' 'negative'
'vk4ga34492m01hwv' 'negative'
'vk4ga34492m01hwv' 'negative'
'vk4ga34492m01hwv' 'negative'
'vk4ga34492m01hwv' 'negative'
'd9hk2zeexhxp2h0v' 'negative'
'f93xk5sq60ehp34j' 'negative'
'f93xk5sq60ehp34j' 'negative'
'ypzzn212hqvwjtc9' 'negative'
'0q2mmnq0wb97z7bm' 'negative'
'jh8k1dd9g2p2d218' 'negative'
'2e5tr0scw89z68kg' 'negative'
'2e5tr0scw89z68kg' 'negative'
'5zb72reqnsxnzuca' 'negative'
'5zb72reqnsxnzuca' 'negative'
'5zb72reqnsxnzuca' 'negative' };
[sigma, ~, uidx] = unique(data(:,1));
counts = accumarray([uidx, 2-data(:,2)], 1);
sigma = [sigma, counts];
sigma
错误信息:
Operator '-' is not supported for operands of type 'cell'.
Error in count_ex (line 45)
counts = accumarray([uidx, 2-data(:,2)], 1);
您可以使用R2022b中的新字典类型来计算出现次数,同时获得唯一项:
d = dictionary(data(:, 1), 0);
for entry = transpose(data(:, 1));
d(entry) = d(entry) + 1;
end
如果不可用:似乎所有条目都被标记为"负",所以您只需要计算第一列中的出现次数,参见https://de.mathworks.com/matlabcentral/answers/115838-count-occurrences-of-string-in-a-single-cell-array-how-many-times-a-string-appear
c = categorical(data(:, 1));
[categories(c), num2cell(countcats(c))]