I have multiple measurement for a same part number in a raw. How can I get last entry in a one column.
this might work:
// make a column to hold results, it will be last column dt << newcolumn("answer"); for(irow=1,irow<=nrows(dt),irow+=1, // assumes columns 1 and 2 and last are NOT data... // grab one row at a time... vec = dt[irow, 3::(ncols(dt)-1)]; // get indexes (loc) of non-missing values...pick the right-most (max) nonmissindex = max(loc(vec)); // handle possible edge case (no data) value = if(ismissing(nonmissindex),.,vec[nonmissindex]); // fill in the answers dt:answer[irow] = value; );
If you turn this into a column formula, you'll want to list the source columns explicitly for table updates and not needing dt.
dt << New Column( "answer", formula( vec = run_1 || run_2 || run_3 || run_4; nonmissindex = Max( Loc( vec ) ); If( Is Missing( nonmissindex ), . // missing if all missing , // vec[nonmissindex] ); ) );
As a formula, the answer column will update when the data changes.
Here is the formula I cam up with
dt = Current Data Table(); x = Row(); col = Length( Loc( dt[x, Index( 3, 6 )] ) ) + 2; dt[x, col];