You are on page 1of 4

[Column Subrange ([i-3:i+4]), Moving SD]

#// Calculate standard deviations of moving ranges [i-3, i+4] in column A

[Power Operator (^)]

#//Calculate the cube of column A

[Conditional Operator (?:)]

col(A)==1/0 ? mean(col(A)) : col(A);
#//Replace missing values in column A with the column's mean

[String Concatenation (+)]

#//Concatenate the text in column A and column B

[String Expression Substitution (%)]

#//Suppose theta in column A and r value in its Comments label
//Calculate x from column A


[Using Function: Convert a Fraction to a Decimal]

#//declare a function to convert from a fraction into a decimal
function double frac2decimal(string str)
{ double aa = %(str$); return aa; }

[String Function: Convert to Standardized City Names]

#//Convert strings in col(A) to standardized city names
Function string stdnames(string str)
if(search(str$, "ny")>0)
return "New York";
if(search(str$, "LA")>0)
return "Los Angeles";

return str$;

[Function with Two Datasets as Inputs: Convolution]

convfunc( col(A), col(B) );
#//Calculate circular convolution of column A and column B
Function dataset convfunc( dataset ds1, dataset ds2 )
Dataset ds3, ds4;
conv ix:= ds1 response:=ds2 circular:=1 oy:=(ds3,ds4);

return ds4;


[Column Range: Adding 1st Two Columns]

#// declare range for col(1) and col(2)
range a =1, b=2;
[Calculation between Columns in Another Sheet]
#//New a workbook within one sheet
newbook name:=SampleData sheet:=1 option:=1;
//Declare range for columns in the 1st sheet of another book
range a=[SampleData]1!1, b=[SampleData]1!2;
win -a %a;

[Relative Column and Row Index]

;// Nothing to do here
#// Copy two columns inverted and shifted down
end = 10; // 10 rows
col(1) = data(1,end);
col(2) = uniform(end);
wks.ncols = 4;
// Illustrate relative addressing in column and rows
for( ii = end ; ii > 0 ; ii-- )
wcol(jj)[end - ii + 7] = wcol(jj-2)[ii];

[Relative Column Index]

#//you can update values on the next column as well
const nn=_ThisColNum;
range a=wcol(nn-2),b=wcol(nn-1);
range next=wcol(nn+1);

[Sample Using Ranges]

#// This sample expects data in columns 1 and 2
// Whatever column this is run in will be replaced
// with result
// declare range for col(1) and col(2)
range x=1,y=2;

// temp dataset as intermediate variable

dataset rr;
rr = x^2+y^2;

// also declare some local constants

const a=12.3, w = 2*pi;

// show these values whenever col is updated

ty -a;list a;


[Loop Columns: Fill Multiple Columns of Data]

#// simply fill 100 columns of data
//columns will be automatically added by the wcol function
loop (i,1,100) {

[Column Index j: Statistics on Multiple Columns]

#//Statistics on first five columns in the worksheet.
wcol(j)[1] = mean(wcol(j-5));
wcol(j)[2] = stddev(wcol(j-5));

[Subtract Baseline for Multiple Curves]

j==1?r2x : r2-r1;
#//Baseline in the first worksheet
range r1=[Book1]Sheet1!col(2);
//Curves XYY in the second worksheet
range r2x=[Book2]Sheet1!col(1);
range r2=[Book2]Sheet1!wcol(j);


[Moving Median Using Subrange]

#// Calculate medians of moving ranges [i-5, i+5] in column A

[Normalize Column to (0,1)]

#// Get index of current column
const nn = _ThisColNum;
// Get min and max using stats XF
stats wcol(nn);
// Subtract min and scale by (max-min)
wcol(nn) -= stats.min;
wcol(nn) /= (stats.max - stats.min);

[Compute Cumulative Sum]

#// Get index of current column
const nColIn = _ThisColNum;
// Add a new column for sum output
const nColOut = wks.ncols;
// Compute sum and set long name of output col
wcol(nColOut) = sum(wcol(nColIn));
wcol(nColOut)[L]$ = "Sum of " + wks.col$(nColIn).name$;

[Difference between Rows]

#// Calculates row by row difference

[Using X-Function: Statistics on Rows]

#//row stats on all columns to the left
//we will do all the scripting here, column formula can be empty
const nn=_ThisColNum;
range mean=wcol(nn), sd=wcol(nn+1), npts=wcol(nn+2);
rowstats 1:wcol(nn-1) mean:=mean sd:=sd n:=npts;

sd.type = 3;//YErr
mean.type = 1;//Y
npts.type = 2;//disregard, not to plot

ss$=mean.Label$; if(ss.IsEmpty()) mean.Label$="Mean";

ss$=sd.Label$; if(ss.IsEmpty()) sd.Label$="StDev";
ss$=npts.Label$; if(ss.IsEmpty()) npts.Label$="N Size";