matlab - Matlab.- 从每个元素都是时间表的单元格数组中删除重复项
问题描述
我有一个大小为 360*1 的单元格数组,其中每个元素由一个 330*3 的时间表组成。每个时间表上每列的名称是“小时”、“量”和“价格”。对于每个时间表,我想删除重复的成交量观察(当然,我也想删除其对应的价格和小时)。我该怎么做?不幸的是,当我有一个向量时,“唯一”函数就很好,但不适用于元胞数组。
提前致谢!
这里我提供一个时间表的示例代码,
Date = datetime({'2015-12-18 08:03:05';'2015-12-18 10:03:17';'2015-12-18 12:03:13';'2015-12-18 12:04:13';'2015-12-18 12:05:13'});
Hour = [1;1;1;1;1];
Volume = [152;152;300;400;500];
Price = [13.4;6.5;7.3;10;11];
TT = timetable(Date,Hour,Volume,Price)
目标是摆脱两个 152 卷观察,这适用于单元阵列中包含的所有时间表。
解决方案
这几乎只是一个关于如何从表中删除元素的问题。这是您的MVE:
dts = [datetime('yesterday')
datetime('today')
datetime('now')
datetime('tomorrow')];
T = timetable(dts,rand(length(dts),1),rand(length(dts),1),'VariableNames',{'price','volume'});
T.volume(4) = T.volume(2);
请注意,第 4 个条目volume
与第二个条目相同。此外,我假设这volume
是一个向量(听起来很合理)......
% find unique entries of the vector T.volume
[~, idx] = unique(T.volume);
% delete other rows / better: keep unique rows of the table
T = T(idx,:);
如果您现在处理包含许多表格的单元格,只需循环遍历它即可。假设您的 360x1 单元被称为C
:
for i = 1:length(C)
% get table from cell
T = C{i};
% do the stuff above
%...
% assign cropped table back to the cell
C{i} = T;
end
推荐阅读
- batch-file - 批处理 .cmd:我可以覆盖参数值 %~1 并将其返回到函数中吗?
- python - ALS 算法 Spark MLlib - 我如何获得自己的“个人推荐”(未排名的电影排名)
- java - 使用 jComboBox 从数据库中过滤 jTable 数据
- android - 无法在 Unity 上读取 android 意图数据
- python - 无法在 pypy 3 上安装 numpy - OSX
- powershell - How to get "FirstInstallVersion" of adobe acrobat reader using powershell
- python - 如何在 django 中创建自定义 mixin?
- windows - 如何在 Windows 10 IOT Core OS 中读取注册表项?
- python - Adding time to a date in Python
- sql-server - MS SQL Server SSIS 导入错误十进制值