MATLAB:在excel中插入缺失日期的行
我有116个大型数据集的excel文件,我正在尝试处理。目前我有两列数据,日期如下:MATLAB:在excel中插入缺失日期的行,matlab,insert,Matlab,Insert,我有116个大型数据集的excel文件,我正在尝试处理。目前我有两列数据,日期如下: Date Value '18/08/2006' 62.6000000000000 '19/08/2006' 0 '20/08/2006' 0 '21/08/2006' 0 '22/08/2006' 0 '23/08/2006' 18.8000000000000 '24/08/2006' 1.80000000000000 '25/08/2006'
Date Value
'18/08/2006' 62.6000000000000
'19/08/2006' 0
'20/08/2006' 0
'21/08/2006' 0
'22/08/2006' 0
'23/08/2006' 18.8000000000000
'24/08/2006' 1.80000000000000
'25/08/2006' 0
'26/08/2006' 0
'27/08/2006' 15
'28/08/2006' 2.60000000000000
2011年4月9日至2011年4月20日之间可能存在间隙,且此类间隙在数据集中的不同文件中不规则。我需要将其中的几个系列连接到同一个数据库中,因为每个系列缺少的值不同,所以当前每行上的日期不对齐
我想为这些丢失的时间戳生成行,并用空白值填充Y列—无数据,不为零,这样我就有了一个连续的时间序列。我不确定我的答案有多有效,但下面的示例似乎适用于一个小示例 我的想法是将日期转换为数值,并将结果向量与跨越日期的数字进行比较。在本例中,如果我正确阅读了您的问题,我将删除第19个和第21个,以创建缺少的值
dates = {'18/08/2006','19/08/2006','20/08/2006','21/08/2006',...
'22/08/2006','23/08/2006','24/08/2006','25/08/2006',...
'26/08/2006','27/08/2006','28/08/2006'}';
values = [62.6 0 0 0 0 18.8 1.8 0 0 15 2.6]';
dates([2,4]) = [];
values([2,4]) = [];
numericDates = datenum(dates,'dd/mm/yyyy');
allDates = (numericDates(1):numericDates(end))';
[~,existingDates,~] = intersect(allDates,numericDates);
existingDates现在是一个向量,包含存在日期的所有日期中的索引。您可以使用此选项复制存在的值:
>> finalValues = nan(size(allDates));
>> finalValues(existingDates) = values
finalValues =
62.6000
NaN
0
NaN
0
18.8000
1.8000
0
0
15.0000
2.6000
还可以使用datestr将allDates向量转换回字符串
我用NaN来表示空白值,这在matlab数值矩阵中并不存在。如果您真的想要,您可以创建一个单元数组而不是NaN向量,并用空格填充它,但这会带来相当大的开销