cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

Calculate moving average for By-Groups

JesperJohansen
Level IV

I'm trying to calculate a moving average for a data-set containing several rounds of the continuous data. That is, I want a calculated average for every data-point, including the first and last. The average should be 7 steps in either direction, except for either end, where non-existing data beyond the 7 step window should simply ignored. Of course I don't want data form different By-Groups to be included in the same average. I was hoping to use the "Col Mean" function, but I can't figure out how to make the average "move". Any suggestions?

BR
Jesper
1 ACCEPTED SOLUTION

Accepted Solutions
Jeff_Perkinson
Community Manager Community Manager


Re: Calculate moving average for By-Groups

Hi Jesper,

You can use the Summation function with an If() condition to do this.

Here's a picture of what it would look like in the formula editor.

3927_JMPScreenSnapz002.png

And here's the text version:

Summation(

  i = Row() - 7,

  Row() + 7,

  If( :DAY == :DAY

  :DIAMETER,

  .

  )

) / Summation( i = Row() - 7, Row() + 7, If( :DAY == :DAY, 1, . ) )

Hope that helps.

-Jeff

-Jeff

View solution in original post

4 REPLIES 4
keith
Level I


Re: Calculate moving average for By-Groups

Do you have ETS licenced?  If so, there is functionality within PROC EXPAND to calculate moving averages

JesperJohansen
Level IV


Re: Calculate moving average for By-Groups

I do have access to EST, but I have never used it. I was hoping to do it directly in the formula editor.

BR
Jesper
Jeff_Perkinson
Community Manager Community Manager


Re: Calculate moving average for By-Groups

Hi Jesper,

You can use the Summation function with an If() condition to do this.

Here's a picture of what it would look like in the formula editor.

3927_JMPScreenSnapz002.png

And here's the text version:

Summation(

  i = Row() - 7,

  Row() + 7,

  If( :DAY == :DAY

  :DIAMETER,

  .

  )

) / Summation( i = Row() - 7, Row() + 7, If( :DAY == :DAY, 1, . ) )

Hope that helps.

-Jeff

-Jeff
JesperJohansen
Level IV


Re: Calculate moving average for By-Groups

That was exactly what I needed. Great! Thank you.

BR
Jesper