Apply Cellfun to only first column but keep second

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

 채택된 답변

madhan ravi
madhan ravi 2019년 1월 11일
편집: madhan ravi 2019년 1월 11일
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])

댓글 수: 2

Thank you that is perfect! much more efficient than the loop I was trying
Anytime :)

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

madhan ravi
madhan ravi 2019년 1월 11일
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

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]}

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Cell Arrays에 대해 자세히 알아보기

질문:

2019년 1월 11일

댓글:

2019년 1월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by