首页 > 解决方案 > Matlab:过滤时间表以平衡面板数据

问题描述

我有一个时间表,我想保留那些在我的变量“Id”中的每个值之间重合的日子。在我放在这里的示例中,我从我的时间表 T 开始,其中有三个不同的“Id”。我的目标是最终得到一个时间表 T_1,其中只保留每个“Id”之间日期重合的观察结果。

T= timetable(datetime({'13/04/2018';'25/04/2018';'28/04/2018';'13/04/2018';'25/04/2018';'13/04/2018'}), [1;1;1;2;2;3],[30;29;45;21;24;8] );
T.Properties.VariableNames = {'Id' 'Price'}

%I want to get:

T_1=timetable(datetime({'13/04/2018';'13/04/2018';'13/04/2018'}), [1;2;3],[30;21;8] );

如果您能帮助我,我将不胜感激!

标签: matlabfilterextractpanel-datatimetable

解决方案


您可以使用

T_1 = T('13/04/2018',:);

我建议您阅读有关文档timerange一般时间表。

如果要将时间表拆分为多个较小的时间表,可以按日期选择它们,并将它们存储在一个元胞数组中:

T_unique = unique(T.Time); % get all unique dates
T_all = cell(size(T_unique)); % init an empty cell array
for k = 1:numel(T_unique)
    T_all{k} = T(T_unique(k),:); % and put the timetable for one date in the cell array
end

推荐阅读