0

我有一张 2775x2 大小的表格,只有文字:

'Papio cynocephalus'      'Papio cynocephalus'  
'Cercopithecus kandti'    'Papio cynocephalus'  
'Papio cynocephalus'      'Human in vivo'       
'Papio cynocephalus'      'Papio cynocephalus'  
'Gorilla beringei'        'Papio cynocephalus'  
'Papio cynocephalus'      'Gorilla gorilla'       
'Papio cynocephalus'      'Human in vivo'       
'Papio cynocephalus'      'Papio cynocephalus'
...

总的来说,有 5 个不同的类别(= 5 个灵长类物种,两列中相同),我想建立一个大小为 111x2 的新表,其中每行表示每个 25 块的最常见类别(两列)行(l1->l25,然后是 l26->l50,然后是 l51->l75...->l2775)。为什么是 111?因为 111 = 2775/25。知道如何进行吗?提前谢谢了 !!

4

1 回答 1

0

这是我的建议。

  1. 将表格中的文本放入元胞数组中
  2. 将元胞数组重塑为 111 行(和 50 列)并转换为categorical
  3. 查找mode每一列

这是一些生成示例数据和演示的代码:

names = {'Alpha','Beta','Gamma','Delta','Echo'}';
A = names(randi(5,2775,1));
B = names(randi(5,2775,1));
txtTable = table(A,B); % This is the kind of table you have

现在转换txtTable为单元格数组以进行整形并将单元格数组转换为categorical

textsWide = categorical(reshape(table2cell(txtTable),25,[]));
mostFrequent = mode(textsWide,2); % Find mode in each column
于 2016-09-12T14:58:32.440 回答