- each group contains exactly the same number of rows (four in your example), and
- each row contains one non-empty data value (in columns 2 - 5).
- The groups are contiguous.
How to append cell arrays with a very specific form
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I have a cell array looking like this
'Rating1'	[]	[]	[]	'8'
'Rating1'	[]	[]	'3'	[]
'Rating1'	'2'	[]	[]	[]
'Rating1'	[]	'2'	[]	[]
'Rating2'	'5'	[]	[]	[]
'Rating2'	[]	'6'	[]	[]
'Rating2'	[]	[]	'3'	[]
'Rating2'	[]	[]	[]	'7'
'Rating3'	'7'	[]	[]	[]
'Rating3'	[]	'7'	[]	[]
'Rating3'	[]	[]	'3'	[]
'Rating3'	[]	[]	[]	'7'
with more than a hundred ratings
I want it to look likes this:
'Rating1'	'2'	'2'	'3'	'8'
'Rating2'	'5'	'6'	'3'     '7'
'Rating3'	'7'	'7'	'3'	'7'
So I have to make a new variable where it appends the score in the columns based on the string in the first column.
I can't really wrap my head around this problem. Can anybody help me perhaps, or give me a push in the right direction?
Thanks alot,
Piet (pronounce as Pete)
0 Commenti
Risposta accettata
  Stephen23
      
      
 il 9 Lug 2019
        
      Modificato: Stephen23
      
      
 il 9 Lug 2019
  
      As long as your data meet some assumptions:
>> C = {...
'Rating1'	[]	[]	[]	'8'
'Rating1'	[]	[]	'3'	[]
'Rating1'	'2'	[]	[]	[]
'Rating1'	[]	'4'	[]	[]
'Rating2'	'5'	[]	[]	[]
'Rating2'	[]	'6'	[]	[]
'Rating2'	[]	[]	'3'	[]
'Rating2'	[]	[]	[]	'7'
'Rating3'	'7'	[]	[]	[]
'Rating3'	[]	'7'	[]	[]
'Rating3'	[]	[]	'3'	[]
'Rating3'	[]	[]	[]	'7'
};
>> D = permute(reshape(C(:,2:5),4,[],4),[1,3,2]);
>> D(cellfun('isempty',D)) = [];
>> D = [C(1:4:end,1),reshape(D,4,[]).']
D = 
    'Rating1'    '2'    '4'    '3'    '8'
    'Rating2'    '5'    '6'    '3'    '7'
    'Rating3'    '7'    '7'    '3'    '7'
0 Commenti
Più risposte (1)
  Jan
      
      
 il 9 Lug 2019
        
      Modificato: Jan
      
      
 il 9 Lug 2019
  
      Or:
C = {...
  'Rating1'	[]	[]	[]	'8'; ...
  'Rating1'	[]	[]	'3'	[]; ...
  'Rating1'	'2'	[]	[]	[]; ...
  'Rating1'	[]	'4'	[]	[]; ...
  'Rating2'	'5'	[]	[]	[]; ...
  'Rating2'	[]	'6'	[]	[]; ...
  'Rating2'	[]	[]	'3'	[]; ...
  'Rating2'	[]	[]	[]	'7'; ...
  'Rating3'	'7'	[]	[]	[]; ...
  'Rating3'	[]	'7'	[]	[]; ...
  'Rating3'	[]	[]	'3'	[]; ...
  'Rating3'	[]	[]	[]	'7'};
V = C(:, 2:5);
D = [C(1:4:end, 1), reshape(V(~cellfun('isempty', V)), [], 4)];
Or:
keep = [mod(1:size(C,1), 4).' == 1, ~cellfun('isempty', C(:, 2:5))];
D    = reshape(C(keep), [], 5)
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


