How about
]prm=. 35 35 27 22, 60 54 49 40, 47 43 40 40, 70 64 0 0,85 85 0 0,: 155 0
0 0
35 35 27 22
60 54 49 40
47 43 40 40
70 64 0 0
85 85 0 0
155 0 0 0
({:"1 prm),.~2-/\"1 prm
0 8 5 22
6 5 9 40
4 3 0 40
6 64 0 0
0 85 0 0
155 0 0 0
The "({:"1 prm),.~" part appends the final column onto the end.
The key here is that scan "\" takes both a derived function "-/" and a
numeric argument "2" specifying the window to which the derived function
applies; a negative numeric argument specifies non-overlapping windows.
On Wed, 28 May 2008 21:51:08 -600, PackRat <[EMAIL PROTECTED]> wrote:
>
> I have an array of continually cumulating values in each row. What I'd
> like to do is to create another array (or even using the *same* array
> eventually saved under a different name) that, for each row, contains
> the deltas (changes) between two columns at a time, sliding along. I
> thought it'd be most convenient to reverse the columns in the array
> (using |.) so that subtractions would be easier. I thought I could use
> something like -/ but that didn't work at all since, no matter what I
> did, it kept grouping the columns differently from what I wanted.
> Here's a reversed array (left) and a derived array (right) showing the
> end result I'm looking for:
>
> 35 35 27 22 0 8 5 22
> 60 54 49 40 6 5 9 40
> 47 43 40 40 --> 4 3 0 40
> 70 64 0 0 6 64 0 0
> 85 85 0 0 0 85 0 0
> 155 0 0 0 155 0 0 0
>
> For example, what I'm looking for should do the following in the first
> row, taking two columns at a time and sliding to the right:
> 35 - 35 = 0 (is or replaces first column's value)
> 35 - 27 = 8 (is or replaces second column's value)
> 27 - 22 = 5 (is or replaces third column's value)
> 22 = 22 (last column retains its value)
>
...
--
Devon McCormick, CFA
^me^ at acm.
org is my
preferred e-mail
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm