How to organize a table?
1 次查看(过去 30 天)
显示 更早的评论
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
3 个评论
采纳的回答
Jon
2019-8-16
编辑:Jon
2019-8-16
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)
0 个评论
更多回答(2 个)
Andrei Bobrov
2019-8-16
编辑:Andrei Bobrov
2019-8-16
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);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!