我有一个数据集,其中缺少一些时间戳。如下到目前为止,我已经写代码,用NAN填充丢失的时间戳数据行 - MATLAB
x = table2dataset(Testing_data);
T1 = x(:,1);
C1 =dataset2cell(T1);
formatIn = 'yyyy-mm-dd HH:MM:SS';
t1= datenum(C1,formatIn);
% Creating 10 minutes of time interval;
avg = 10/60/24;
tnew = [t1(1):avg:t1(end)]';
indx = round((t1-t1(1))/avg) + 1;
ynew = NaN(length(tnew),1);
ynew(indx)=t1;
% replacing missing time with NaN
t = datetime(ynew,'ConvertFrom','datenum');
formatIn = 'yyyy-mm-dd HH:MM:SS';
DateVector = datevec(ynew,formatIn);
dt = datestr(ynew,'yyyy-mm-dd HH:MM:SS');
ds = string(dt);
测试数据已经在这里显示三个参数,
Time x y
2009-04-10 02:00:00.000 1 0.1
2009-04-10 02:10:00.000 2 0.2
2009-04-10 02:30:00.000 3 0.3
2009-04-10 02:50:00.000 4 0.4
现在你可以看到,对于10分钟的间隔,有遗漏的时间戳(2 :20和2:40),所以我想添加时间戳。然后我想x
和y
值为NAN
。所以我的输出会是这样,
Time x y
2009-04-10 02:00:00.000 1 0.1
2009-04-10 02:10:00.000 2 0.2
2009-04-10 02:20:00.000 NaN NaN
2009-04-10 02:30:00.000 3 0.3
2009-04-10 02:40:00.000 NaN NaN
2009-04-10 02:50:00.000 4 0.4
正如你可以从我的代码中看到的,我只是能够增加NaN
带时间戳,但现在想取我所需的相应x和y的值。
请注意我有超过3000个以上格式的数据行,我想对我的所有值执行相同的操作。
谢谢你。我只是举了一个例子。它正在工作,但正如我前面所说,我有数据集由6个参数组成(例如x,y,z,a,b,c)。有没有更简单的方法(对x和y所做的)对所有这6个参数都是一样的。意味着每当缺少时间戳时,将NAN加入其时间以及其对应的x,y,z,a,b,c ...? –
我不明白这个问题:你是否想将'NaN'设置为只有附加参数('z,a,b,c')或时间戳?说:'NaN-NaN-NaN ... NaN NaN NaN'或'2009-04-10 02:40:00 NaN NaN NaN NaN NaN NaN'? –
仅适用于参数。你刚刚写的代码我想要的参数不是时间戳相同... –