我有一组具有相同时间戳但数据不同的大型传感器数据样本,这意味着在同一时间戳中有大量数据。数据包括时间戳,传感器类型和传感器数据,如下所示:
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40081767,-0.5068207,9.878754
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40081890,-0.5068207,9.878344
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40081787,-0.5035457,9.824754
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40084355,-0.4568207,9.878756
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40081347,-0.5068277,9.823274
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40087856,-0.5068887,9.878758
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40081787,-0.5068678,9.878344
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER, 0.40081897,-0.5045667,9.856754
我的问题是如何将同一时间戳的数据合并为一个平均值?它可能是一个非常大量的数据,所以有任何脚本可以做到吗?
答案 0 :(得分:0)
这可能是您正在寻找的内容:
$ cat tst.awk
BEGIN { FS=OFS="," }
$1 != prev { prt(); prev=$1 }
{
++cnt
key = $1 OFS $2
for (i=3; i<=NF; i++) {
sum[i] += $i
}
}
END { prt() }
function prt( i) {
if (cnt) {
printf "%s%s", key, OFS
for (i=3; i<=NF; i++) {
printf "%s%s", sum[i]/cnt, (i<NF?OFS:ORS)
}
}
cnt = 0
}
$ awk -f tst.awk file
2017-05-17 23:12:57 169, TYPE_ACCELEROMETER,0.400828,-0.499895,9.86222
如果没有更全面的样本输入/输出,很难说。