You are on page 1of 4

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

stddev(col(A)[i-3:i+4]);
#// Calculate standard deviations of moving ranges [i-3, i+4] in column A

## [Power Operator (^)]

col(A)^3;
#//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 (+)]

col(A)\$+col(B)\$;
#//Concatenate the text in column A and column B

## [String Expression Substitution (%)]

%(col(A)[C]\$)*cos(col(A)/180*pi);
#//Suppose theta in column A and r value in its Comments label
//Calculate x from column A

[OriginSeparator1]

## [Using Function: Convert a Fraction to a Decimal]

frac2decimal(col(A));
#//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]

stdnames(col(A))\$;
#//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;
}

[OriginSeparator2]

## [Column Range: Adding 1st Two Columns]

a+b;
#// declare range for col(1) and col(2)
range a =1, b=2;
[Calculation between Columns in Another Sheet]
a*b;
#//New a workbook within one sheet
%a=%h;
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;
a={1:10};
b={0.1:0.1:1};
win -a %a;

## [Relative Column and Row Index]

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

## [Relative Column Index]

(a+b)/2;
#//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);
next=(a-b)/2;

## [Sample Using Ranges]

a*exp(-rr/w);
#// 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;

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;

[OriginSeparator3]

## [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) {
wcol(i)={0:0.01:i+2};
}

## [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);

[OriginSeparator4]

## [Moving Median Using Subrange]

median(col(A)[i-5:i+5],3);
#// 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]

diff(col(A));
#// 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";