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

3 commentaires

madhan ravi
madhan ravi le 16 Août 2019
Modifié(e) : madhan ravi le 16 Août 2019
Do not let the readers guess, so that they don't spend more time in guessing how the actual data looks like! Always post a sample data of what you're working with. You have always ignored the comments asking for the sample data until now! Posting pictures of data is completely pointless and useless. Attaching a file as .mat would be better to work with.
Zeynab Mousavikhamene
Zeynab Mousavikhamene le 16 Août 2019
Modifié(e) : Zeynab Mousavikhamene le 16 Août 2019
@madhan ravi: I added a photo. If you track my question, I have added data to some of my questions.
Andrei Bobrov
Andrei Bobrov le 16 Août 2019
Please read about varfun.

Connectez-vous pour commenter.

 Réponse acceptée

Jon
Jon le 16 Août 2019
Modifié(e) : Jon le 16 Août 2019

0 votes

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)

Plus de réponses (2)

Zeynab Mousavikhamene
Zeynab Mousavikhamene le 16 Août 2019

0 votes

I used celltracker_group = varfun(@mean,celltracker,'GroupingVariables',{'time','cell_type'});
and it worked perfectly. It produces GroupCount which is exactly what I want.
Andrei Bobrov
Andrei Bobrov le 16 Août 2019
Modifié(e) : Andrei Bobrov le 16 Août 2019

0 votes

T = readtable('img1.txt');
out = varfun(@sum,T,'GroupingVariables',...
{'time','cell_type'},'InputVariables','cell_type');
out = out(:,1:end-1);
or
[A,out] = findgroups(T(:,{'time','cell_type'}));
out.counts = accumarray(A,1);

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by