It’s World Statistics Day! To honor the theme of the day, the JMP User Community is having conversations about the importance of trust in statistics and data. And we want to hear from you! Tell us the steps you take to ensure that your data is trustworthy.
Choose Language Hide Translation Bar

## Create multiple lag columns

Here is a script that can be used to create multiple lag columns of varibles in a data table.  This may be useful if your data is skewed in time.  For example, if sensor data is being captured in time, and the data in your table is ordered chronologically, then data corresponding to one batch or product may be spread out over multiple rows.  The script will allow you to easily align the data for analysis.

``````Names Default To Here(1);

dt=current data table();
/* Query the user for a column roles. */
cdlg = Column Dialog(

ycol = ColList( "Y", MinCol( 1 ), MaxCol( ), Data Type("Numeric"),Modeling Type("Continuous") ),

Line Up( 2,
"Start Lag", slag = Edit Number( 32 )),
Line Up( 2,
"End Lag", elag = Edit Number( 38 ))
);

If( cdlg["Button"] == -1, Throw( "User cancelled" ) );
Remove From( cdlg ); Eval List( cdlg );

range=elag-slag;

If( range <= 0, Throw( "Bad Range" ) );

/* Unload the values from the Column Dialog */
my_collist = cdlg["ycol"];

/*Number of columns chosen*/
numcols=N Items(my_collist);

for(i=1,i<=numcols,i++,

for(j=slag,j<=elag,j++,

newcol=dt << New Column( Char(my_collist[i]) ||" Lag "||Char(j));
newVals = (J(j,1,.) |/ (Column(dt,my_collist[i]) << Get Values))[1::N Row(dt)];
newcol<<Set Values(newVals);

));``````
Article Labels
Article Tags
Contributors