我有一个相当复杂的情况,并且是 SAS 的新手,我正在努力寻找解决方案。我有两个数据集(控制器、数据集),每个数据集中都有一个功率测量值。我需要将控制器数据与 daq 数据对齐。但是每个数据集中都有一个时间戳,他们没有费心将 daq 与控制器同步,因此两者之间存在不确定的时间增量。更复杂的是,两个系统都以不同的速率对数据进行采样......虽然控制器只在测试期间记录数据,但数据采集器的记录时间更长。因此,对于典型的测试运行,控制器有大约 1000 行数据,而 daq 在不同的采样率下有 30,000 行(这意味着绝对测量值可能不会完全匹配)。
我试图找出一种自动对齐数据的方法 - 即找出控制器数据的曲线与 daq 数据的曲线最接近的位置 - 给我们时间增量。
我目前的想法是遍历两个数组,从 controllerow[j] 中减去 daqrow[i],然后将曲线的增量相加并找到最小增量:
set work.daqPower work.controlPower
array pwr_daq{*} daqPwr; /* daqPwr is name of power variable in work.daqPower */
array pwr_control{*} controlPwr; /* controllPwr is name of power variable in work.controlPower */
do idaq=1 to (30000 - 1000);
x = idaq;
tmp = 0;
do jcontrol=1 to 1000;
tmp = tmp + ABS(pwr_daq[x] - pwr_control[jcontrol]);
x = x + 1;
end;
output;
end;
我显然不理解数组文档。我一直在网上搜索并浏览了很多示例,但我没有找到任何显示读取两个数据集并从中创建单独数组的示例。如果您有任何关于更好方法的想法,我将不胜感激任何类似示例的链接。
谢谢,
弗雷德
更新数据样本:
DateTime daqPower
05JUL12:10:10:00 205.45687866211
05JUL12:10:10:00 204.33529663086
05JUL12:10:10:00 204.17504882813
05JUL12:10:10:00 203.53414916992
05JUL12:10:10:00 203.53414916992
05JUL12:10:10:00 204.81597900391
05JUL12:10:10:00 204.33529663086
05JUL12:10:10:00 205.13641357422
05JUL12:10:10:00 207.05914306641
05JUL12:10:10:00 206.73867797852
05JUL12:10:10:00 207.05914306641
05JUL12:10:10:00 208.50119018555
05JUL12:10:10:00 208.50119018555
05JUL12:10:10:00 207.53982543945
05JUL12:10:10:00 207.21936035156
05JUL12:10:10:00 206.73867797852
05JUL12:10:10:00 206.09777832031
05JUL12:10:10:00 205.77731323242
05JUL12:10:10:00 205.13641357422
05JUL12:10:10:00 205.45687866211
DateTime controlPower
05JUL12:10:01:19 226.8705902
05JUL12:10:01:19 232.526886
05JUL12:10:01:19 236.9337006
05JUL12:10:01:19 242.3483887
05JUL12:10:01:19 246.9274292
05JUL12:10:01:19 246.3426819
05JUL12:10:01:19 244.3251495
05JUL12:10:01:19 242.6235352
05JUL12:10:01:20 243.5477753
05JUL12:10:01:20 240.9849854
05JUL12:10:01:20 230.8181458
05JUL12:10:01:20 225.579071
05JUL12:10:01:20 221.7199097
05JUL12:10:01:20 214.7053986
05JUL12:10:01:20 212.1452332
05JUL12:10:01:20 210.9714203
05JUL12:10:01:20 213.6631317
05JUL12:10:01:20 213.3510437
05JUL12:10:01:21 209.8970642
05JUL12:10:01:21 210.884964
请记住,时间不匹配(我们“听说”时间戳可能彼此不同步大约 10 分钟+)。关键是控制器的曲线比 daq 的间隔要短得多,我们试图通过对齐控制器曲线与控制器曲线最接近的位置来确定时间差。我说曲线,因为最初只是想匹配最大值,但是虽然控制器数据中只有一个最大值,但 daq 数据会持续更长的时间,并且功率曲线多次穿过该值,所以它会很难仅基于此对齐数据。