计算Matlab的唯一行数

时间:2016-07-21 02:47:33

标签: excel matlab

嗨我有一组由一年和一个字符串组成的数据。我想计算每年每个字符串发生的次数。例如,

1997 string
1997年字符串
1997年字符串
1997年关键 1998年字符串
1998年关键词 1998年关键

我希望它返回

1997 string 3 1997年关键1
1998字符串1
1998年关键2

当我从大约7,000个值的大型csv文件导出以及如何创建具有唯一值和次数的新表时,我是否应该将它们格式化为表格或单元格数组时感到很困惑他们出现了?

2 个答案:

答案 0 :(得分:0)

您可以使用unique和histcounts的组合。

strings = {'1997 string'
     '1997 string'
     '1997 string'
     '1997 key'
     '1998 string'
     '1998 key'
     '1998 key'};
[uniqueStrings, ~, uniquePositions] = unique(strings);
uniqueCounts = histcounts(uniquePositions)';
[uniqueStrings, num2cell(uniqueCounts)]

答案 1 :(得分:0)

如果你不介意数据在表格中,我认为这样可行:

data = {'1997', 'string'; '1997', 'string'; '1997', 'string'; '1997', 'key'; '1998', 'string'; '1998', 'key'; '1998', 'key'};

data_table = cell2table(data);
[unique_data,cnt] = unique(data_table,'rows');

data_table_combined = strcat(data_table.data1,'_',data_table.data2);
unique_combined = strcat(unique_data.data1,'_',unique_data.data2);

for i = 1:length(unique_combined)
    b = strfind(cell(data_table_combined),char(unique_combined(i)));
    count(i) = sum(cell2mat(b));
end

count_table = table(count');
NT = [unique_data,count_table]

它生成此表:

NT =

data1      data2      Var1
______    ________    ____

'1997'    'key'       1   
'1997'    'string'    3   
'1998'    'key'       2   
'1998'    'string'    1   

您也可以使用table2cell(NT)将其转换为单元格数组。

希望这有帮助。