如何基于一列查找相同的行并将它们标记为组

  • 本文关键字:记为 何基于 查找 一列 matlab
  • 更新时间 :
  • 英文 :


我有一个表格形式的大数据:

Filename    A     B
xxxxx       1     2
xxxxx       3     4   
xxxxx       5     5 
xxxxx       6     .
xxxxx       .     .
yyyyy       .     .
yyyyy
yyyyy
yyyyy
zzzzz
zzzzz

我需要扫描第一列的所有行(大约 10,000 行),看看文件名在哪里更改,并为每个唯一的文件名创建一个标签。这样,我将使用生成的标签创建另一列.

file filename  A     B
1      xxxxx
xxxxx
xxxxx
2      yyyyy
yyyyy
yyyyy
3      zzzzz
zzzzz

我还需要在 A 列中找到每个唯一文件(文件 1、文件 2...)的最大值。任何建议将不胜感激。谢谢

我将从一个示例表开始,如您的示例所示:

T = 
Filename    A     B
________    __    _
'xxxxx'      4    4
'xxxxx'      6    2
'xxxxx'      1    8
'xxxxx'      1    4
'xxxxx'      6    6
'yyyyy'      8    2
'yyyyy'     10    7
'yyyyy'      2    3
'yyyyy'      6    7
'zzzzz'      5    7
'zzzzz'      1    8

我们可以提取文件名的第一列,并使用函数unique为每个唯一文件创建一组索引(即标签)。然后,我们可以从这个标签向量创建一个表,并将其与我们现有的表连接起来:

[~, ~, index] = unique(T.Filename, 'stable');
T = [table(index, 'VariableNames', {'Label'}) T];
T = 
Label    Filename    A     B
_____    ________    __    _
1        'xxxxx'      4    4
1        'xxxxx'      6    2
1        'xxxxx'      1    8
1        'xxxxx'      1    4
1        'xxxxx'      6    6
2        'yyyyy'      8    2
2        'yyyyy'     10    7
2        'yyyyy'      2    3
2        'yyyyy'      6    7
3        'zzzzz'      5    7
3        'zzzzz'      1    8

然后,我们可以将此标签向量与accumarray一起使用,以收集每个唯一文件的列A最大值:

maxVals = accumarray(T.Label, T.A, [], @max)
maxVals =
6    % For file 1
10    % For file 2
5    % For file 3

相关内容

最新更新