Matlab:过滤时间表以平衡面板数据

Matlab: Filter a timetable to balance a panel data

我有一个时间表,我想保留那些与我的变量“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] );

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

您可以使用

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

我建议您阅读 docs 关于 timerange 和一般时间表的信息。

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

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