excel - 在matlab中转置数据块
问题描述
我已经为他的问题苦苦挣扎了很长时间,然后又回到了卓越,浪费了大量的时间和精力。我希望我可以在 Matlab 中解决这个问题,因为我有很多数据。我的仪器吐出数据如下:
TIME PAR ETS
01:30 0 0
01:30 40 300
01:30 100 500
.
01:30 1500 800
下一次
02:30 0 0
02:30 40 344
02:30 100 653
.
.
02:30 1500 1700
所以每隔一小时左右我就会得到一个 PAR 与 ETS 曲线,但所有数据都堆叠在另一个下方,但我希望我有一个包含一个 PAR 列的文件,并且每个 ETS 列都堆叠在其旁边,时间为标题同样:
PAR 01:30 02:30
0 0 0
40 300 344
100 500 653
.
.
1500 800 1700
我希望我很清楚。是否可以在 Matlab 中执行此操作,因为我是新手,但我想从某个地方开始。非常感谢。
解决方案
如果每个时间段的值PAR
相同(如您的示例中所示)。然后你可以使用unique
andtable/join
来构建你的转置表。
首先用于unique
从列中获取列名和time
列的值PAR
。例如
T = readtable('data.txt');
var_names = unique(T.TIME);
row_values = unique(T.PAR);
接下来创建一个将PAR
值作为第一列的基表
pivotTable = table(row_values,'VariableNames',{'PAR'});
现在,您可以遍历变量名称,join
以将它们作为变量附加到基表中。该循环将具有以下元素
- 选择特定的行以为一组值
time
创建子表time
- 将表
ETS
列名称设置为当前time
值。请注意,时间值如01:30
不是有效的变量名。因此,您可以使用matlab.lang.makeValidName
将这些值转换为表列的适当名称。 - 使用 join 将此子表附加到基表
这是一个如何工作的示例:
for v = var_names'
selected_rows = strcmp(T.TIME,v{1});
subTable = T(selected_rows,{'PAR', 'ETS'});
subTable.Properties.VariableNames{2} =matlab.lang.makeValidName(v{1});
pivotTable = join(pivotTable,subTable);
end
推荐阅读
- scala - 将数组的Dataset转换为DataFrame
- java - Itext 生成的 PDF 文档到 S3 服务器
- python - 如何用列迭代地填充熊猫数据框
- asp.net-core-mvc - 实体框架核心中十进制的错误消息
- forms - Vuetify - 如何在表单上标记文本左侧和文本字段右侧
- php - Zend Db Illegal mix of collations and sytnax error using COLLATE
- python - 当我给它一个列表 [..., ..., ..., ...] 作为函数参数时,QtGui.QColor 不起作用
- c# - 在统一 C# 中显示具有特定旋转的相机的完整对象
- angular - 用作自定义组件时如何为单选按钮实现 ngModel(双向绑定)?
- javascript - 为什么这个 SVG 元素中有隐藏的文本节点?