Apply Cellfun to only first column but keep second

1 view (last 30 days)
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

Accepted Answer

madhan ravi
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
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]}
  1 Comment
Jacob Larson
Jacob Larson on 11 Jan 2019
Awesome, very helpful! Also is there a way to sum the second column values based on the IDs in the first and get rid of the repeated IDs?
Meaning for the examples below the ID 'VWVPSSVMVV' would sum to 6 in the second column and the ID would only appear one time.
{'VWVPSSVMVV'} {[3]}
{'RWAREVLQFA'} {[1]}
{'VWVPSSVMVV'} {[3]}
{'ASLQQWVQVA'} {[4]}

Sign in to comment.

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!