我有一些以非均匀时间间隔测量的数据,例如:
Time(s) Value(KB)
2.1 304
43.0 400
60.2 380
87.0 440
89.5 445
102.2 460
124.3 470
我在 CSV 中拥有这个数据,时间从 T=0 开始增加,如上所述,并且我想Value
以周期性间隔(60 秒)进行采样以匹配我拥有的其他一些数据。
我试图使用 Microsoft Excel 2007 来完成将数据缩减为最接近每个 60 秒间隔的值的任务(有一点数据,因此它是始终较高(124.3
)还是较低(102.2
)或绝对值最接近(124.3
)并不重要)。我尝试将公式应用于时间列 (MOD(Tn, 60)),但我无法找到一种方法来获取此输出(时间值在 0 到 60 之间循环)并过滤掉除每个循环中最接近 60 的值之外的所有内容。有什么建议吗?
答案1
在另一个表中执行以下操作:
- D列:输入的值有60、120、180等等。
- E 列:
=MATCH(D1,$A:$A)
- 这将显示值小于 D 列的最后一行 - F 列:
=INDEX($A:$A,E1)
- 返回较低的秒值 - G 列:
=INDEX($A:$A,E1+1)
- 返回较高的秒值 - H 列:
=INDEX($B:$B,IF(D1-F1<G1-D1,E1+1,E1))
- 这将为您提供最接近的值(KB)
或者,只需将此公式放在 F 列中:
=INDEX($B:$B,IF(D1-INDEX($A:$A,E1)<INDEX($A:$A,E1+1)-D1,E1+1,E1))
或者在 G 列中使用这个大公式:
=INDEX($B:$B,MATCH(D1,$A:$A)+IF(D1-INDEX($A:$A,MATCH(D1,$A:$A))<INDEX($A:$A,MATCH(D1,$A:$A)+1)-D1,1,0))
答案2
将分钟间隔(以秒为单位)附加到 ColumnA,确保最新时间在现有数据之后,并按时间对 A:B 进行排序,从最小到最大,我的数据有标题。过滤 ColumnB 以仅选择空白并插入:
=如果 (A4-A3>A5-A4,B5,B3)
进入第一个空白处(此处为第 4 行)并向下复制,然后删除最后一行:
可以相对容易地扩展到在值之间进行插值(这可能更准确)而不是简单地选择最接近的值。