0
我有一個不均勻採樣的時間序列,我想將它降頻採樣到20Hz。在0.05s時間窗口(20Hz)中對數據點進行分箱並對其應用算術平均值,從而得出移動平均值。數據幀是這樣的:採樣數據不均勻的高斯濾波器
Time Right Left
1 0.000000000 18.21980 30.98789
2 0.009222031 22.15157 37.18590
3 0.022511959 25.63218 42.49231
4 0.029854059 28.43851 46.57811
5 0.039320946 30.43885 49.29414
6 0.052499056 31.60561 50.67852
7 0.059612036 32.01045 50.92879
8 0.076606989 31.80335 50.34975
9 0.082647085 31.18134 49.29151
10 0.090698957 30.35415 48.09110
我用於均線的代碼是這樣的:
data$group_num <- floor(data$Time/0.05)
data2<-NULL
data2$Right = aggregate(data$Right,
list(group_num=data$group_num), mean)
data2$Left = aggregate(data$Left,
list(group_num=data$group_num), mean)
data2$Time = aggregate(data$Time,
list(group_num=data$group_num), mean)
然而,對於優化它,我想打,而高斯濾波器,從而使數據垃圾桶中點的重量更重。我無法找到任何可以處理不均勻採樣的功能。因此,我開始寫一個腳本,在那裏我設法給他們權重。
data$weight <- ((data$Time-data$group_num*0.05)*((data$group_num+1)*0.05-data$Time))^5
我必須通過在他們自己的bin(例如)權重的平均值來規範這些權重。通過將這些權重歸一化到他們自己的組的平均值,我遇到了功能太慢的問題。有誰能幫我一把嗎?
我建議看看'動物園'包的'rollmean'和'rollapply'功能 –
如果我理解正確,這些函數可用於裝箱的固定數量的數據點。這就是我迄今看到的每個功能的工作原理。但是,因爲我的採樣不均勻,所以我根據時間窗口對它們進行了處理,其中一些數據點有3個數據點,其他4個或5個或6個。...... – chiser
好吧,那麼'data.table'是否會成爲您的選項? –