繁体   English   中英

使用MATLAB将类别变量合并成一行

[英]pooling lines in a categorical variable with MATLAB

我有一张大小为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。 是否知道如何进行? 提前谢谢了 !!

这是我的建议。

  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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM