计算每个 ID 的'negative'单元格数



我想计算每个唯一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))]

最新更新