- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
How can i subtract row value from previous value and continue til end of table? rows have mx values
Here is the sample. Delta column is what I am trying to acheive. Part# are category.
Part# | Data | Delta |
1 | 4 | 4 - 4 |
2 | 5 | 5 - 5 |
3 | 6 | 6 - 6 |
1 | 7 | 4 - 7 |
2 | 8 | 5 - 8 |
3 | 9 | 6 - 9 |
1 | 10 | 7 - 10 |
2 | 11 | 8 - 11 |
3 | 12 | 9 - 12 |
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
Do I need to define "Delta Pattern" column?
6 REPLIES 6
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
As a column formula
If( Row() <= 3, :Data, :Data - Row() );
In a Script
For Each Row(
If( Row() <= 3, :Delta = :Data, :Delta = :Data - Row() );
);
Jim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
Hi Jim,
thanks for prompt response.
this works in case the row number lines up with values in Data column for subtraction. what if there are random values in Data column and want to consider the raw values of data columns for subtraction?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
Sample data
Part# | Data | Delta |
1 | 0 | 0 - 0 |
2 | 0 | 0 - 0 |
3 | 0 | 0 - 0 |
1 | 9 | 0 - 9 |
2 | 23 | 0 - 23 |
3 | 45 | 0 - 45 |
1 | 1 | 9 - 1 |
2 | 34 | 23 - 34 |
3 | 56 | 45 - 56 |
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
Here is how I would do it
Names Default To Here( 1 );
// Create the sample data table
dt = New Table( "Example",
Add Rows( 9 ),
New Column( "Part#", Character, "Nominal", Set Values( {"1", "2", "3", "1", "2", "3", "1", "2", "3"} ) ),
New Column( "Data",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 9, 23, 45, 1, 34, 56] )
),
New Column( "Delta Pattern",
Character,
"Nominal",
Set Values( {"0 - 0", "0 - 0", "0 - 0", "0 - 9", "0 - 23", "0 - 45", "9 - 1", "23 - 34", "45 - 56"} )
)
);
// Add a new column to provide a path back to the original order
dt << New Column( "RowNum", formula( Row() ) );
// Delete the formula, so the values become static rather than calculated
dt:RowNum << delete formula;
// Sort the data by Part# and Row
dt << sort( by( Part#, :RowNum ), replace table( 1 ) );
// Create the new column with the delta values, which is pretty simple with all of
// the data sorted by Part#
dt << New Column( "Delta", formula( If( Lag( :Part# ) != Part#, 0, Lag( :Data ) - :Data ) ) );
// Delete formula so the values become static
dt:Delta << delete formula;
// Sort back into the original order
dt << sort( by( :RowNum ), replace table( 1 ) );
// Delete the Rownum column since it is no longer needed
dt << delete columns( "RowNum" );
There are otherways to do it too, but they would be slower to calculate
Jim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
Do I need to define "Delta Pattern" column?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How can i subtract row value from previous value and continue til end of table? rows have mx val
- In my example, the column that you called "Delta", I change to be called "Delta Pattern". I did that because I wanted the the results of the calculation to be placed into a column named "Delta", since the word delta refers to the difference. So, what you need to do, to match what I did, is to change the name of the column in your starting data table from "Delta" to "Delta Pattern".
- You have marked your latest response as a solution. This is not a solution, but another question. You need to remove the Solution selection from that item, and place on the item that actually shows the solution.
- The assumption that I believe most of the individuals that respond to questions posted in the Community Discussion, is that what is presented back to the questioner, is examined and understood. Not just copied and pasted into their solution without understanding what was provided for them. And if in the examination of the response, something is not understood, then a question on that specific area is asked back to the community. Therefore, the end result is learning, and movement by the questioner, to a point where they can start to contribute as a respondent to other community members.
Jim