Count percentage of certain number in struct
2 次查看(过去 30 天)
显示 更早的评论
I have a 1x120 struct with 11 fields. 1 of the fields contains the condition (half of which 0, and half 1) and another field contains the accuracy (either good=1 or wrong=0).
I now want to know how many 1s are in the accuracy field for condition=1. How do I do this? Which function will I need?
I have multiple of these 1x120 structs, so I don't want to count it manually.
采纳的回答
Voss
2024-2-15
% something similar to your 1x120 struct:
S = struct( ...
'condition',num2cell(logical(randi([0,1],1,120))), ...
'accuracy',num2cell(logical(randi([0,1],1,120))))
% number of elements of S with accuracy==1 and condition==1 (what you asked about)
n_good_condition_1 = nnz([S([S.condition]).accuracy])
% number of elements of S with accuracy==1 and condition==0
n_good_condition_0 = nnz([S(~[S.condition]).accuracy])
% number of elements of S with accuracy==0 and condition==1
n_wrong_condition_1 = nnz(~[S([S.condition]).accuracy])
% number of elements of S with accuracy==0 and condition==0
n_wrong_condition_0 = nnz(~[S(~[S.condition]).accuracy])
2 个评论
更多回答(2 个)
Adam Danz
2024-2-15
编辑:Adam Danz
2024-2-15
Another approach is to use groupcounts to tally the counts between the two groups.
1. Convert the structure to a table. I'll use Voss's struct example.
S = struct( ...
'condition',num2cell(logical(randi([0,1],1,120))), ...
'accuracy',num2cell(logical(randi([0,1],1,120))));
T = struct2table(S);
head(T) % show some rows of the table
2. Apply groupcounts
summaryTable = groupcounts(T,{'condition','accuracy'})
0 个评论
Austin M. Weber
2024-2-15
You can use nnz which tells you how many non-zeros are in an array. If your struct is named s then you can extract the data you want and perform the calculations:
idx = s.Condition == 1; % Find positions where the condition = 1
accuracy = s.Accuracy(idx); % Find the accuracy values where the condition = 1
number_of_ones = nnz(accuracy); % Count number of ones in 'accuracy'
4 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!