不同频率的可数据数据

时间:2013-01-17 22:58:04

标签: c# datatable

我的数据表有19列,第一列都填充了以毫秒为单位的时间戳:
18491个
18591个
18691个
...

随机地在时间戳列中,时间将从+100增量变为+50增量:
20291个
20341个
20391个
20441个
...

再次回来,多次。

其他列具有不同的数据值,分布在不同的频率,如1 Hz,5Hz,10Hz,值之间为double.NaN。

将这些列平均为1Hz数据而忽略NaN单元并创建仅具有1Hz数据且没有空白的新数据表的最佳方法是什么?
即:

自:
时间Col1 Col2 Col3 Col4 Col5
18491 4.0 2.2 NaN 1.0 NaN
18591 NaN NaN 1.0 1.0 NaN
18691 NaN 3.2 NaN 2.0 NaN
18791 NaN NaN NaN 3.0 NaN
18891 NaN 4.4 NaN 1.0 NaN
18991 NaN NaN NaN 4.0 NaN
19091年NaN 1.4 6.0 4.0 NaN
19191 NaN NaN NaN 3.0 NaN
19291 NaN 3.2 NaN 2.0 NaN
19341 NaN NaN NaN NaN 2.0
19391 NaN NaN NaN 3.0 NaN
19441 6.0 3.4 NaN NaN 1.0
19491 NaN NaN NaN 2.0 NaN
19541 NaN NaN NaN NaN 3.0
19591 NaN NaN 3.0 4.0 NaN
19641 NaN 5.2 NaN NaN 1.0
19691 NaN NaN NaN 2.0 NaN
19791 NaN NaN NaN 1.0 NaN
19891 NaN 4.1 NaN 0.0 NaN
19991 NaN NaN NaN 2.0 NaN
20091 NaN 2.2 4.0 1.0 NaN
20191 NaN NaN NaN 1.0 NaN
20291 NaN 5.1 NaN 1.0 NaN
20391 NaN NaN NaN 1.0 NaN
20491 5.0 3.3 NaN 2.0 NaN

要:
时间Col1 Col2 Col3 Col4 Col5
18491 4.0 2.2 NaN 1.0 NaN
19491 6.0 3.21 3.5 2.5 1.5
20491 5.0 3.98 3.5 1.5 2.0

感谢任何帮助,我还是C#和数据表的新手,所以提前谢谢大家!

1 个答案:

答案 0 :(得分:0)

With Rounded as
(
   Select ROUND(SomeColumn, -3) as RoundedToThousands From SomeTable
)
Select RoundedToThousands, Count(*) from Rounded 
Group By RoundedToThousands

您需要修改舍入逻辑,以满足您对491和441作为舍入数字的决定的要求。可能是地板而不是圆形的一些组合,然后+ 491。