Как построить скользящую среднюю для многих кадров данных в R

#r

#r

Вопрос:

У меня есть несколько кадров данных, и, например, 8-й dframe-это dfQ[[8]] :

 c(16, 14, 15, 14, 14, 12, 13, 14, 13, 12, 13, 12, 12, 13, 13,  13, 13, 13, 14, 14, 16, 13, 12, 13, 12, 13, 12, 13, 12, 12, 12,  12, 12, 13, 13, 13, 13, 13, 14, 17, 17, 17, 18, 11, 12, 14, 13,  13, 12, 11, 11, 11, 9, 9, 9, 11, 12, 12, 9, 13, 14, 14, 16, 12,  15, 14, 14, 14, 14, 11, 13, 13, 14, 13, 13, 12, 11, 11, 11, 9,  11, 11, 10, 9, 8, 8, 8, 8, 6, 7, 8, 9, 9, 11, 12, 9, 12, 11,  11, 9, 12, 12, 12, 13, 9, 14, 9, 12, 13, 9, 12, 12, 13, 13, 9,  13, 14, 14, 13, 12, 13, 12, 12, 12, 11, 12, 9, 11, 8, 9, 9, 8,  8, 1)  

Его длина составляет 134 метра. Я использую movavg into library(pracma) для фильтрации этих данных (эта функция позволяет мне выбирать номер и тип фильтра).

Как построить отфильтрованные данные элементов в выбранном диапазоне (например, 8-й dfQ[[8]]) Я выбрал диапазон 124:134) для кадров данных?

Я пытался использовать этот код, но он не работает:

 par(las = 1) plot(0, 0, xlim = c(0, 50), ylim = c(0,20),xlab = 'Steps', ylab = '',type = 'n') lines(movavg(dfQ[[8]][(length(dfQ[[8]])-30):length(dfQ[[8]])],10, type ="s"), type= "o",pch=16,lwd=0.4, lty=3, xlab = 'Steps', ylab = '',cex = 0.6, col = "darkblue") abline(h=c(10), lwd=2, lty=1, col="red") mtext("MAX D A.U.", col = "black", adj=-0.05, padj=-0.1, cex=0.8) grid(nx = NULL, ny = NULL,lty = 2, col = "gray", lwd = 1)  

Я получаю ошибку:

 Error in movavg(dfL_F[[assemble1[i]]][(length(dfL_F[[assemble1[i]]]) - :  Window length 'n' must be greater then length of time series.  

Комментарии:

1. Ваш код не может работать с предоставленными вами образцами данных. Это действительно полезно, когда нам не нужно анализировать ваш код, чтобы адаптироваться к образцам данных, которые вы нам предоставляете.

2. @r2evans Я редактирую свой код

3. «это не работает» … что случилось? Если есть ошибка или предупреждение, пожалуйста, укажите буквальный текст (в блоке кода). Я не pracma установил, но я должен задаться вопросом … dfQ[[8]][(length(dfQ[[8]])-30)]:length(dfQ[[8]]) кажется неправильным, : кажется более подходящим между 30) и length , но у вас ] там есть. Интересно, должно ли это быть вместо этого dfQ[[8]][(length(dfQ[[8]])-30):length(dfQ[[8]])] ?

4. @r2evans Извините, Вы правы, я забыл ]… Но я не могу построить скользящую среднюю

5. Ладно, ладно … Я все еще не pracma установил, я надеюсь, что кто-нибудь, кто более знаком с этим, придет и поможет. Если ] он был в неправильном месте, вам действительно следует обновить код как таковой.

Ответ №1:

Спасибо за исправление моего кода! Эта проблема зависит от правильного выбора методов для моих конкретных данных:

 par(las = 1) plot(0, 0, xlim = c(0, 50), ylim = c(0,0.05),xlab = 'Steps', ylab = '',type = 'n') lines(movavg(dfQ[[8]][(length(dfQ[[8]])-30):length(dfQ[[8]])],10,type = "r"),type= "o",pch=16,lwd=0.4, lty=3, xlab = 'Число шагов', ylab = '',cex = 0.6, col = "darkblue") abline(h=c(0.004500), lwd=2, lty=1, col="red") mtext("MAX D A.U.", col = "black", adj=-0.05, padj=-0.1, cex=0.8) grid(nx = NULL, ny = NULL,lty = 2, col = "gray", lwd = 1