我使用Financial Toolbox管理一些时间序列数据,但我没有找到重命名fints对象内数据系列的函数。是否存在?
在下面的代码中,我延迟了一系列,然后想要将其与原始版本合并,但只保留一个版本,因为系列名称是相同的。在第二部分中,我将lagObj拆开,更改名称并构建一个新的lagObj2,这将导致合并的fints对象具有两列预期。
工具箱中是否有一个函数可以执行此操作,或者是否有某些功能可以访问现有fints对象的属性,因此我可以更改lagObj中的名称而不必执行额外的工作?
data = (1:6)';
dates = (today:today+5)';
% Create fints and lagged versions
fintsObj = fints(dates, data);
lagObj = lagts(fintsObj);
% Both are called 'series1'
fieldnames(fintsObj, 1)
fieldnames(lagObj, 1)
% merged object has single series due to identical names
merge(fintsObj, lagObj, 'SortColumns', 0)
%% ----------------------------------------
% Tear apart lagObj and rename series
lagDates = lagObj.dates;
lagData = fts2mat(lagObj);
lagNames = fieldnames(lagObj);
lagNames{4,1} = 'lagSeries1';
% Rebuild lagObj with new name
lagObj2 = fints(lagDates, lagData, lagNames{4,1});
%% -----------------------------------------
% Now merge has two series
merge(fintsObj, lagObj2, 'SortColumns', 0)
答案 0 :(得分:2)
您想要的功能是chfield
,它允许您更改数据系列的名称。由于您没有指定fints
的第三个输入,因此默认为series1
,series2
等。使用chfield
您可以更改数据系列名称fints
对象。
f = chfield(f, 'series1', 'MySeries');
对于您的具体示例,这看起来像:
data = (1:6)';
dates = (today:today+5)';
% Create the initial time series object
fintsObj = fints(dates, data, 'Original');
% Change the field on the new time series object
lagObj = chfield(lagts(fintsObj), 'Original', 'Lag');
% Then merge
merge(fintsObj, lagObj, 'SortColumns', 0)
% desc: || LAGTS on
% freq: Unknown (0)
%
% 'dates: (6)' 'Original: (6)' 'Lag: (6)'
% '21-May-2016' [ 1] [ 0]
% '22-May-2016' [ 2] [ 1]
% '23-May-2016' [ 3] [ 2]
% '24-May-2016' [ 4] [ 3]
% '25-May-2016' [ 5] [ 4]
% '26-May-2016' [ 6] [ 5]