如何在MATLAB中对电路板测试数据表进行分组与部分转置?
MATLAB表格数据重塑:分组转置测试步骤数据
针对你需要将电路板测试数据按SN和Start_Time分组,并将Test_Name转置为列的需求,直接使用MATLAB的unstack函数即可一步完成,无需额外手动分组去重。
原始数据代码
SN = [1; 1; 1; 2; 2; 2]; Start_Time = [10; 10; 10; 20; 20; 20]; Test_Name = {'test_1'; 'test_2'; 'test_3'; 'test_1'; 'test_2'; 'test_3'}; Data = [23; 15; 23; 1; 44; 77]; T1 = table(SN, Start_Time, Test_Name, Data,'VariableNames',{'SN' 'Start_Time' 'Test_Name' 'Data'});
处理代码
% 可选:将Test_Name转为分类变量,确保分组一致性(若原始已是分类可省略) T1.Test_Name = categorical(T1.Test_Name); % 执行转置与分组去重:unstack自动按SN+Start_Time分组,将Test_Name转为列 T2 = unstack(T1, 'Data', 'Test_Name');
处理结果
运行后得到的T2结构如下:
SN Start_Time test_1 test_2 test_3 __ __________ ______ ______ ______ 1 10 23 15 23 2 20 1 44 77
特殊情况处理
如果同一SN+Start_Time组合下存在重复的Test_Name(即同一测试步骤多次记录),unstack默认会报错。此时可指定聚合函数处理重复值,例如取第一个值:
T2 = unstack(T1, 'Data', 'Test_Name', 'AggregationFunction', @first);
或取均值:
T2 = unstack(T1, 'Data', 'Test_Name', 'AggregationFunction', @mean);
内容的提问来源于stack exchange,提问作者rl791128
相关产品推荐
相关产品推荐

