MATLAB: How to organize a table

table

I have a table around 700 rows and 7 columns. The second column is time. I have 5 different times. The last column is "cell type" which is an integer from 0 to 4. I need to know that at time=0 how many "cell type=3" exists? how many "cell type=4" exists? and do this for all times.
Is varfun appicable in this case?
Thanks Capture.JPG

Best Answer

You could do this with a simple loop I'll assume your table is called mytable
% find maximum possible value for cell type

cellTypeMax = max(mytable.cell_type)
% find the row numbers of all the rows with time = 0

irow = mytable.time == 0
% loop through the rows at time zero counting number of each occurence
count = zeros(cellTypeMax,1); % preallocate
for k = 1:cellTypeMax
count(k) = sum(mytable.cell_type(irow)==k)
end
You could also get fancier and eliminate the loop using histcounts (or histc in earlier versions)
% find maximum possible value for cell type
cellTypeMax = max(mytable.cell_type)
% find the row numbers of all the rows with time = 0
irow = mytable.time == 0
% define bin edges assume that cell types start at 1
edges = [0.5:1:cellTypeMax+1];
% count occurences within rows that are at time zero
count = histcounts(mytable.cell_type(irow),edges)