Can we categorize and sum 2 columns from table

1 view (last 30 days)
Here I've a table data temp with disease names & date as columns. How can I find sum/count of a particular disease on a given day. Was able to calculate individually:
%%for disease
data_temp.Disease = categorical (data_temp.Disease);
m_val = unique (data_temp.Disease );
m=arrayfun(@(x) sum(data_temp.Disease==x),m_val);
%% categorising &counting Date
data_temp.Date = categorical (data_temp.Timestamps);
date = unique (data_temp.Date);
m=arrayfun(@(x) sum(data_temp.Date==x),date);
How can we use both parameters together?

Accepted Answer

Guillaume
Guillaume on 24 Jun 2019
There are plenty of functions to compute aggregrate properties of table. groupsummary is one way, split-apply-combine workflow is another, rowfun another one.
If I understood correctly:
rowfun(@nnz, data_temp, 'GroupingVariables', {'Timestamps', 'Disease'}, 'InputVariables', 'Timestamps');
%or
groupsummary(data_temp, {'Timestamps', 'Disease'}, 'nnz', 'Timestamps');
Note that if Disease is not categorical already you should make it categorical once and for all in your table:
data_temp = convertvars(data_temp, 'Disease', 'categorical');
Timestamps on the other should be of type datetime, not a categorical array.

More Answers (0)

Categories

Find more on Biological and Health Sciences in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!