 # New functionality ## New Functions to Increase Productivity

Increase your productivity with new GAUSS 18 features for efficient data navigation and organization. Uncover data insights quicker with new tools for searching, reorganizing, merging, and much more!

• New function innerJoin and outerJoin allow flexible matrix combining.
ab = innerJoin(A, 1, B, 1);
$$A = \begin{bmatrix} 10001 & 21,021\\ 10029 & 32,183\\ 10012 & 17,151\\ \end{bmatrix}$$ $$B = \begin{bmatrix} 10012 & 21\\ 10001 & 44\\ 10018 & 25\\ \end{bmatrix}$$ $${\xrightarrow[\text{columns }A_1\text{ and }B_1]{\text{innerJoin on}} \begin{bmatrix} 10001 & 21,021 & 44\\ 10012 & 17,151 & 21\\ \end{bmatrix}}$$
ab = outerJoin(A, 1, B, 1);
$$A = \begin{bmatrix} 10001 & 21,021\\ 10029 & 32,183\\ 10012 & 17,151\\ \end{bmatrix}$$
$$B = \begin{bmatrix} 10012 & 21\\ 10001 & 44\\ 10018 & 25\\ \end{bmatrix}$$
$$\xrightarrow[\text{columns }A_1\text{ and }B_1]{\text{(left) outerJoin on}} \begin{bmatrix} 10001 & 21,021 & 44\\ 10029 & 32,183 & .\\ 10012 & 17,151 & 21\\ \end{bmatrix}$$
• Create block diagonal matrices using blockDiag.
//'blockDiag' can create block matrices from 1, 2 or more input matrices
d = blockDiag(A, B);
$$A = \begin{bmatrix} a_{11} & a_{12}\\ a_{21} & a_{22}\\ \end{bmatrix} \\ B = \begin{bmatrix} b_{11} & b_{12} & b_{13}\\ b_{21} & b_{22} & b_{23}\\ \end{bmatrix}$$
$$\xrightarrow[]{\text{blockDiag}} \begin{bmatrix} a_{11} & a_{12} & 0 & 0 & 0\\ a_{21} & a_{22} & 0 & 0 & 0\\ 0 & 0 & b_{11} & b_{12} & b_{13}\\ 0 & 0 & b_{21} & b_{22} & b_{23}\\ \end{bmatrix}$$
• Find whether a matrix, array or string array contains one or more elements from a list.
//Find whether 'X' contains any elements in 'list'
any = contains(X, list);
$${X = \begin{bmatrix} M & married & NA\\ F & single & employed\\ F & married & employed\\ M & single & unemployed\\ \end{bmatrix}}$$
$$list = \begin{bmatrix} NA\\ ""\\ NaN \end{bmatrix}$$
$$\xrightarrow[]{\text{contains}} \begin{bmatrix}1\end{bmatrix}$$

• Find which observations (rows) match one or more elements with rowContains.
//Find which rows in  'X' contain any elements from 'list'
any = rowContains(X, list);
$$X = \begin{bmatrix} M & married & NA\\ F & single & employed\\ F & married & employed\\ M & single & unemployed\\ \end{bmatrix}$$
$$list = \begin{bmatrix} F\\ single \end{bmatrix}$$
$$\xrightarrow[]{\text{rowContains}} \begin{bmatrix} 0\\ 1\\ 1\\ 1 \end{bmatrix}$$

• Find which elements of matrix match one or more elements with ismember.
//Find which elements in  'X' match any elements from 'list'
match = ismember(X, list);
$$X = \begin{bmatrix} M & married & NA\\ F & single & employed\\ F & married & employed\\ M & single & unemployed\\ \end{bmatrix}$$
$$list = \begin{bmatrix} F\\ single \end{bmatrix}$$
$$\xrightarrow[]{\text{ismember}} \begin{bmatrix} 0 & 0 & 0\\ 1 & 1 & 0\\ 1 & 0 & 0\\ 1 & 1 & 0 \end{bmatrix}$$

• Easily collapse multidimensional arrays with the new squeeze function.
//Remove any singleton dimensions from 'A'
A = squeeze(A);
$$A \in \Re^{m,1,n} \xrightarrow[]{\text{squeeze}} A \in \Re^{m,n}$$
• Return the full path to the location of a program file regardless of location with __FILE_DIR
//With your program and data in the same directory, __FILE_DIR
//allows you to easily find your data regardless of your
//working directory--greatly simplifies code sharing
data_file = __FILE_DIR $+ "mydata.csv"; //Prefer to keep your data in a different relative path? //No problem, __FILE_DIR works easily in this situation as well data_file = __FILE_DIR$+ "../data/mydata.csv";
• Delete specified columns from matrices with delcols.
//Remove the 3rd and 5th columns from 'A'
A = delcols(A, 3|5);
• Replace all matches of a substring within a larger string or string array with strreplace.
//Regularize addresses: Avenue to Ave
address = strreplace(address, "Avenue", "Ave");
$$address = \begin{bmatrix} \text{100 Main Ave}\\ \text{112 Charles Avenue}\\ \text{49 W State St}\\ \text{24 Third Avenue} \end{bmatrix} \xrightarrow[]{\text{strreplace}} \begin{bmatrix} \text{100 Main Ave}\\ \text{112 Charles Ave}\\ \text{49 W State St}\\ \text{24 Third Ave} \end{bmatrix}$$
• Array compatibility extended to erf, erfc, erfcinv, erfc, pdfn, and the power operator.

### Have a Specific Question?

Get a real answer from a real person

### Need Support?

Get help from our friendly experts.