Apply Cellfun to only first column but keep second
1 view (last 30 days)
Show older comments
Im starting with a two column cell array that Ive manipulated to clean up the data I have, pulled certain characters out of string text using regexp which created a 1 column array but I could concatenate its matching second column back. Now within this 2 column array the first column that I manipulated has some empty cells. I would liked to get rid of those empty cells in the first column and their correspnding row in the second column but keep both columns within an array.
Ex. I want to get ride of the first two rows since they are empty but keep the others along with their corresponding numbers in column 2.
[] 1
[] 1
'VWVPSSVMVV' 3
'RWAREVLQFA' 1
'ASLQQWVQVA' 4
0 Comments
Accepted Answer
madhan ravi
on 11 Jan 2019
Edited: madhan ravi
on 11 Jan 2019
Anytime :) , if you got the answer to your orignal question about removing empty row make sure to accept the answer.
Note: You can adapt the any two methods below according to your version.
Requires 2015b or later:
mycell={'VWVPSSVMVV' 3
'VWVPSSVMVV' 3
'RWAREVLQFA' 1
'ASLQQWVQVA' 4};
T=cell2table(mycell);
C=unique(T);
T.Properties.VariableNames={'Names','IDs'};
G=findgroups(T);
C.IDs=splitapply(@sum,T.IDs,G);
NewTable=C(:,[1 end]);
NewTable.Properties.VariableNames={'uniqueNames','sumIDs'}
Requires 2018a or later:
mycell={'VWVPSSVMVV' 3
'VWVPSSVMVV' 3
'RWAREVLQFA' 1
'ASLQQWVQVA' 4};
T=cell2table(mycell);
T.Properties.VariableNames={'Names','IDs'};
G = groupsummary(T,'Names','sum');
NewTable=G(:,[1 end])
More Answers (1)
madhan ravi
on 11 Jan 2019
mycell={[] 1
[] 1
'VWVPSSVMVV' 3
'RWAREVLQFA' 1
'ASLQQWVQVA' 4};
EXPECTED=mycell(all(~cellfun('isempty',mycell),2),:)
Gives:
EXPECTED =
3×2 cell array
{'VWVPSSVMVV'} {[3]}
{'RWAREVLQFA'} {[1]}
{'ASLQQWVQVA'} {[4]}
See Also
Categories
Find more on Cell Arrays 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!