4 Commits

Author SHA1 Message Date
SASPAC - SAS Packages Archive
3aaf69ebab Merge pull request #35 from SASPAC/dev
The BasePlus package [ver. 1.38.0]
2024-03-12 14:46:39 +01:00
SASPAC - SAS Packages Archive
1d474a79e4 Merge branch 'main' into dev 2024-03-12 14:46:26 +01:00
Bart Jablonski
9b9d9dea38 The BasePlus package [ver. 1.38.0]
The BasePlus package [ver. 1.38.0]

Update to the `%rainCloudPlot()` macro, new parameter for "vertical" plots added.

Documentation updated and "cleaned".

---

SHA256 digest for BasePlus: `F*209FB8198270DEAB6151CE31391A352A065B4EE2689F40433FA9550A7F4AAC18`

---
2024-03-12 14:42:32 +01:00
Bart Jablonski
21316add63 The BasePlus package [ver. 1.37.0]
## The BasePlus package [ver. 1.37.0]

Changes:

- Update to the %rainCloudPlot() macro.
- New macro %iffunc() added.
- Documentation updated.

---

SHA256 digest for BasePlus: F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790

---
2024-03-10 08:27:52 +01:00
13 changed files with 7143 additions and 69 deletions

View File

@@ -54,7 +54,7 @@ libname NEW "%workPath()/new";
``` ```
and more. and more.
SHA256 digest for the latest version of `BasePlus`: F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790 SHA256 digest for the latest version of `BasePlus`: F*209FB8198270DEAB6151CE31391A352A065B4EE2689F40433FA9550A7F4AAC18
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus") [**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")

View File

@@ -7,22 +7,22 @@
*The BASE SAS plus a bunch of functionalities I am missing in BASE SAS* *The BASE SAS plus a bunch of functionalities I am missing in BASE SAS*
- Package: BasePlus - Package: BasePlus
- Version: 1.37.0 - Version: 1.38.0
- Generated: 2024-03-09T13:28:58 - Generated: 2024-03-12T14:26:19
- Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com) - Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com)
- Maintainer(s): Bartosz Jablonski (yabwon@gmail.com) - Maintainer(s): Bartosz Jablonski (yabwon@gmail.com)
- License: MIT - License: MIT
- File SHA256: `F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790` for this version - File SHA256: `F*209FB8198270DEAB6151CE31391A352A065B4EE2689F40433FA9550A7F4AAC18` for this version
- Content SHA256: `C*7A4A85EB6C2C23E6A171DDCD8F61D7ED40E9A6751F9579DF893E148A95FFE188` for this version - Content SHA256: `C*14C505C4EF488A8BE2404A692D55C8B81FC5A6075D8A35F8B6767B34ACF5E48E` for this version
--- ---
# The `BasePlus` package, version: `1.37.0`; # The `BasePlus` package, version: `1.38.0`;
--- ---
# The BasePlus package [ver. 1.37.0] <a name="baseplus-package"></a> ############################################### # The BasePlus package [ver. 1.38.0] <a name="baseplus-package"></a> ###############################################
The **BasePlus** package implements useful The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS. functions and functionalities I miss in the BASE SAS.
@@ -349,7 +349,7 @@ run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**EXAMPLE 26** Downloading data from the internet to a local dirrectory: **EXAMPLE 26** Downloading data from the internet to a local directory:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%downloadFilesTo(~/directoryA) %downloadFilesTo(~/directoryA)
datalines4; datalines4;
@@ -362,7 +362,7 @@ run;
**EXAMPLE 27** Conditional value assignment: **EXAMPLE 27** Conditional value assignment:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%let x = A B C; %let x = A B C;
%let y = %iffunc((%scan(&x.,1)=A),Stats with "A"., Does not start with "A".); %let y = %iffunc((%scan(&x.,1)=A),Starts with "A"., Does not start with "A".);
%put &=y.; %put &=y.;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -516,7 +516,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%dedupListC()` macro: <<< <a name="deduplistc-macro"></a> ####################### ## >>> `%dedupListC()` macro: <<< <a name="deduplistc-macro"></a> #######################
The `%dedupListC()` macro deletes duplicated values from The `%dedupListC()` macro deletes duplicated values from
a *COMMA separated* list of values. List, including separators, a *COMMA-separated* list of values. List, including separators,
can be no longer than a value carried by a single macro variable. can be no longer than a value carried by a single macro variable.
Returned value is *unquoted*. Leading and trailing spaces are ignored. Returned value is *unquoted*. Leading and trailing spaces are ignored.
@@ -534,7 +534,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
**Arguments description**: **Arguments description**:
1. `list` - A list of *comma separated* values. 1. `list` - A list of *comma-separated* values.
### EXAMPLES AND USECASES: #################################################### ### EXAMPLES AND USECASES: ####################################################
@@ -577,7 +577,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%dedupListP()` macro: <<< <a name="deduplistp-macro"></a> ####################### ## >>> `%dedupListP()` macro: <<< <a name="deduplistp-macro"></a> #######################
The `%dedupListP()` macro deletes duplicated values from The `%dedupListP()` macro deletes duplicated values from
a *PIPE(`|`) separated* list of values. List, including separators, a *PIPE(`|`)-separated* list of values. List, including separators,
can be no longer than a value carried by a single macro variable. can be no longer than a value carried by a single macro variable.
Returned value is *unquoted*. Leading and trailing spaces are ignored. Returned value is *unquoted*. Leading and trailing spaces are ignored.
@@ -595,7 +595,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
**Arguments description**: **Arguments description**:
1. `list` - A list of *pipe separated* values. 1. `list` - A list of *pipe-separated* values.
### EXAMPLES AND USECASES: #################################################### ### EXAMPLES AND USECASES: ####################################################
@@ -638,7 +638,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%dedupListS()` macro: <<< <a name="deduplists-macro"></a> ####################### ## >>> `%dedupListS()` macro: <<< <a name="deduplists-macro"></a> #######################
The `%dedupListS()` macro deletes duplicated values from The `%dedupListS()` macro deletes duplicated values from
a *SPACE separated* list of values. List, including separators, a *SPACE-separated* list of values. List, including separators,
can be no longer than a value carried by a single macro variable. can be no longer than a value carried by a single macro variable.
Returned value is *unquoted*. Returned value is *unquoted*.
@@ -650,13 +650,13 @@ The `%dedupListS()` macro executes like a pure macro code.
The basic syntax is the following, the `<...>` means optional parameters: The basic syntax is the following, the `<...>` means optional parameters:
~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~sas
%dedupListS( %dedupListS(
list of space separated values list of space-separated values
) )
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
**Arguments description**: **Arguments description**:
1. `list` - A list of *space separated* values. 1. `list` - A list of *space-separated* values.
### EXAMPLES AND USECASES: #################################################### ### EXAMPLES AND USECASES: ####################################################
@@ -692,7 +692,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%dedupListX()` macro: <<< <a name="deduplistx-macro"></a> ####################### ## >>> `%dedupListX()` macro: <<< <a name="deduplistx-macro"></a> #######################
The `%dedupListX()` macro deletes duplicated values from The `%dedupListX()` macro deletes duplicated values from
a *X separated* list of values, where the `X` represents a *X-separated* list of values, where the `X` represents
a *single character* separator. List, including separators, a *single character* separator. List, including separators,
can be no longer than a value carried by a single macro variable. can be no longer than a value carried by a single macro variable.
@@ -714,7 +714,7 @@ XlistXofXxXseparatedXvalues
**Arguments description**: **Arguments description**:
1. `list` - A list of *X separated* values. 1. `list` - A list of *X-separated* values.
### EXAMPLES AND USECASES: #################################################### ### EXAMPLES AND USECASES: ####################################################
@@ -773,7 +773,7 @@ and subdirectories of a given `root` directory.
The extracted info may be just a list of files and subdirectories or, if The extracted info may be just a list of files and subdirectories or, if
the `details=` parameter is set to 1, additional operating system information the `details=` parameter is set to 1, additional operating system information
is extracted (information is OSS dependent and gives different results for Linux is extracted (information is OS-dependent and gives different results for Linux
and for Windows) and for Windows)
The extracted info can be narrowed down to files (`keepFiles=1`) or to The extracted info can be narrowed down to files (`keepFiles=1`) or to
@@ -1093,12 +1093,12 @@ The basic syntax is the following, the `<...>` means optional parameters:
%put *%str(%')%bquote(%getVars(sashelp.class,sep=''))%str(%')*; %put *%str(%')%bquote(%getVars(sashelp.class,sep=''))%str(%')*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c) coma separated double quote list: c) comma-separated double quote list:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%put *"%getVars(sashelp.class,sep=%str(", "))"*; %put *"%getVars(sashelp.class,sep=%str(", "))"*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d) coma separated single quote list: d) comma-separated single quote list:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%put *%str(%')%getVars(sashelp.class,sep=', ')%str(%')*; %put *%str(%')%getVars(sashelp.class,sep=', ')%str(%')*;
%let x = %str(%')%getVars(sashelp.class,sep=', ')%str(%'); %let x = %str(%')%getVars(sashelp.class,sep=', ')%str(%');
@@ -1163,12 +1163,12 @@ a) one single or double qiote:
%put *%QgetVars(sashelp.class,quote='')*; %put *%QgetVars(sashelp.class,quote='')*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c) coma separated double quote list: c) comma-separated double quote list:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%put *%getVars(sashelp.class,sep=%str(,),quote=%str(%"))*; %put *%getVars(sashelp.class,sep=%str(,),quote=%str(%"))*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d) coma separated single quote list: d) comma-separated single quote list:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%let x = %getVars(sashelp.class,sep=%str(,),quote=%str(%')); %let x = %getVars(sashelp.class,sep=%str(,),quote=%str(%'));
%put &=x.; %put &=x.;
@@ -1546,8 +1546,8 @@ The basic syntax is the following, the `<...>` means optional parameters:
) )
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
The text string is concider as *"only dataset name"*, i.e. macro does not The text string is consider as *"only dataset name"*, i.e. macro does not
assume it contain library as prefix or data set options as sufix. assume it contain library as prefix or data set options as suffix.
See the `%LDSN()` macro for comparison. See the `%LDSN()` macro for comparison.
--- ---
@@ -1778,7 +1778,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%QdedupListX()` macro: <<< <a name="qdeduplistx-macro"></a> ####################### ## >>> `%QdedupListX()` macro: <<< <a name="qdeduplistx-macro"></a> #######################
The `%QdedupListX()` macro deletes duplicated values from The `%QdedupListX()` macro deletes duplicated values from
a *X separated* list of values, where the `X` represents a *X-separated* list of values, where the `X` represents
a *single character* separator. List, including separators, a *single character* separator. List, including separators,
can be no longer than a value carried by a single macro variable. can be no longer than a value carried by a single macro variable.
@@ -1800,7 +1800,7 @@ XlistXofXxXseparatedXvalues
**Arguments description**: **Arguments description**:
1. `list` - A list of *X separated* values. 1. `list` - A list of *X-separated* values.
### EXAMPLES AND USECASES: #################################################### ### EXAMPLES AND USECASES: ####################################################
@@ -1910,9 +1910,9 @@ See examples in `%getVars()` help for the details.
The zipEvalf() and QzipEvalf() macro functions The zipEvalf() and QzipEvalf() macro functions
allow to use a function on elements of pair of allow to use a function on elements of pair of
space separated lists. space-separated lists.
For two space separated lists of text strings the corresponding For two space-separated lists of text strings the corresponding
elements are taken and the macro applies a function, provided by user, elements are taken and the macro applies a function, provided by user,
to calculate result of the function on taken elements. to calculate result of the function on taken elements.
@@ -1944,9 +1944,9 @@ The basic syntax is the following, the `<...>` means optional parameters:
**Arguments description**: **Arguments description**:
1. `first` - *Required*, a space separated list of texts. 1. `first` - *Required*, a space-separated list of texts.
2. `second` - *Required*, a space separated list of texts. 2. `second` - *Required*, a space-separated list of texts.
* `function = cat` - *Optional*, default value is `cat`, * `function = cat` - *Optional*, default value is `cat`,
a function which will be applied a function which will be applied
@@ -1963,18 +1963,18 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `argBf =` - *Optional*, default value is empty, * `argBf =` - *Optional*, default value is empty,
arguments of the function inserted arguments of the function inserted
*before* elements the first list. *before* elements the first list.
If multiple should be comma separated. If multiple should be comma-separated.
* `argMd =` - *Optional*, default value is empty, * `argMd =` - *Optional*, default value is empty,
arguments of the function inserted arguments of the function inserted
*between* elements the first list and *between* elements the first list and
the second list. the second list.
If multiple should be comma separated. If multiple should be comma-separated.
* `argAf =` - *Optional*, default value is empty, * `argAf =` - *Optional*, default value is empty,
arguments of the function inserted arguments of the function inserted
*after* elements the second list. *after* elements the second list.
If multiple should be comma separated. If multiple should be comma-separated.
* `format=` - *Optional*, default value is empty, * `format=` - *Optional*, default value is empty,
indicates a format which should be used indicates a format which should be used
@@ -1995,8 +1995,8 @@ See examples in `%zipEvalf()` help for the details.
## >>> `%RainCloudPlot()` macro: <<< <a name="raincloudplot-macro"></a> ####################### ## >>> `%RainCloudPlot()` macro: <<< <a name="raincloudplot-macro"></a> #######################
The RainCloudPlot() macro allow to plot Rain Cloud plots, i.e. pots of The RainCloudPlot() macro allow to plot Rain Cloud plots, i.e.
kernel density estimates, jitter data values, and box-and-whiskers plot. plots of kernel density estimates, jitter data values, and box-and-whiskers plot.
See examples below for the details. See examples below for the details.
@@ -2174,6 +2174,12 @@ The basic syntax is the following, the `<...>` means optional parameters:
By default only the: `width=`, `height=`, and `antialiasmax=` By default only the: `width=`, `height=`, and `antialiasmax=`
are modified. are modified.
* `vertical` - *Optional*, default value is `0`.
Set value to `1` to plot "clouds & boxes" vertically.
**NOTE:** *Before setting the parameter to `1`, first
prepare the plot in the "horizontal" version since all
other parameters assume that orientation(!) and then are
converted accordingly.*
***Stat related options***: ***Stat related options***:
@@ -2222,10 +2228,10 @@ The basic syntax is the following, the `<...>` means optional parameters:
Use the `%str()` or `%nrstr()` macro-function to handle special characters. Use the `%str()` or `%nrstr()` macro-function to handle special characters.
The `%unquote()` is used when resolving the parameter. The `%unquote()` is used when resolving the parameter.
* The `catLabels` and `xLabels` should be quoted comma separated lists enclosed with brackets, * The `catLabels` and `xLabels` should be quoted comma-separated lists enclosed with brackets,
e.g. `catLabels=("Continent of Origin", "Car Type")`, see Example below. e.g. `catLabels=("Continent of Origin", "Car Type")`, see Example below.
* The `catLabelAttrs` and `xLabelAttrs` should be space separated lists of `key=value` pairs, * The `catLabelAttrs` and `xLabelAttrs` should be space-separated lists of `key=value` pairs,
e.g. `xLabelAttrs=size=12 color=Pink weight=bold`, see Example below. e.g. `xLabelAttrs=size=12 color=Pink weight=bold`, see Example below.
* Kernel density estimates and basic statistics are calculated with `PROC UNIVARIATE`. * Kernel density estimates and basic statistics are calculated with `PROC UNIVARIATE`.
@@ -2236,6 +2242,10 @@ The basic syntax is the following, the `<...>` means optional parameters:
* SAS notes (`NOTE:`) are disabled for the execution time. * SAS notes (`NOTE:`) are disabled for the execution time.
* Before setting the `vertical=` parameter to `1`, first prepare the plot
in the "horizontal" version since all other parameters assume that orientation(!)
and then are converted accordingly.
* List of predefined colours is: * List of predefined colours is:
`BlueViolet`, `RoyalBlue`, `OliveDrab`, `Gold`, `HotPink`, `Crimson`, `BlueViolet`, `RoyalBlue`, `OliveDrab`, `Gold`, `HotPink`, `Crimson`,
`MediumPurple`, `CornflowerBlue`, `YellowGreen`, `Goldenrod`, `Orchid`, `IndianRed`. `MediumPurple`, `CornflowerBlue`, `YellowGreen`, `Goldenrod`, `Orchid`, `IndianRed`.
@@ -2389,6 +2399,35 @@ The output can be seen in the `md` file.
The output can be seen in the `md` file. The output can be seen in the `md` file.
![Example 3](./baseplus_RainCloudPlot_Ex3.png) ![Example 3](./baseplus_RainCloudPlot_Ex3.png)
**EXAMPLE 4.** Rain Cloud plot for `sashelp.cars` dataset
with groups by Drive Train for Weight (LBS)
variable ploted "vertically":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%RainCloudPlot(
sashelp.cars
, DriveTrain
, Weight
, HeightPX=400
, colorslist=Red Green Blue
, y2axisLevels=5
, catLabels=("DriveTrain")
, xLabels="Weight (LBS)"
, xLabelAttrs=size=12 color=Black weight=bold
, y2axisLines=1
, vscale=percent
, vscalemax=50
, vertical = 1
, title = %nrstr(title1 J=C HEIGHT=3 "The VERTICAL plotting is cool, ...";)
, footnote = %nrstr(footnote1 J=L HEIGHT=2 "... isn't it?";)
)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The output can be seen in the `md` file.
![Example 4](./baseplus_RainCloudPlot_Ex4.png)
--- ---
@@ -2722,7 +2761,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%unzipArch()` macro: <<< <a name="unziparch-macro"></a> ####################### ## >>> `%unzipArch()` macro: <<< <a name="unziparch-macro"></a> #######################
The unzipArch() macro allows to unzip content of a ZIP archive. The unzipArch() macro allows to unzip content of a ZIP archive.
Macro is OS independent, the `XCMD` option is not required. Macro is OS-independent, the `XCMD` option is not required.
The `dlCreateDir` option is used under the hood. The `dlCreateDir` option is used under the hood.
@@ -2955,7 +2994,7 @@ run;
## >>> `%zipArch()` macro: <<< <a name="ziparch-macro"></a> ####################### ## >>> `%zipArch()` macro: <<< <a name="ziparch-macro"></a> #######################
The zipArch() macro allows to ZIP content of a directory. The zipArch() macro allows to ZIP content of a directory.
Macro is OS independent, the `XCMD` option is not required. Macro is OS-independent, the `XCMD` option is not required.
Content of zipped archive can be listed in the log. Content of zipped archive can be listed in the log.
@@ -3092,9 +3131,9 @@ run;
The zipEvalf() and QzipEvalf() macro functions The zipEvalf() and QzipEvalf() macro functions
allow to use a function on elements of pair of allow to use a function on elements of pair of
space separated lists. space-separated lists.
For two space separated lists of text strings the corresponding For two space-separated lists of text strings the corresponding
elements are taken and the macro applies a function, provided by user, elements are taken and the macro applies a function, provided by user,
to calculate result of the function on taken elements. to calculate result of the function on taken elements.
@@ -3126,9 +3165,9 @@ The basic syntax is the following, the `<...>` means optional parameters:
**Arguments description**: **Arguments description**:
1. `first` - *Required*, a space separated list of texts. 1. `first` - *Required*, a space-separated list of texts.
2. `second` - *Required*, a space separated list of texts. 2. `second` - *Required*, a space-separated list of texts.
* `function = cat` - *Optional*, default value is `cat`, * `function = cat` - *Optional*, default value is `cat`,
a function which will be applied a function which will be applied
@@ -3145,18 +3184,18 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `argBf =` - *Optional*, default value is empty, * `argBf =` - *Optional*, default value is empty,
arguments of the function inserted arguments of the function inserted
*before* elements the first list. *before* elements the first list.
If multiple should be comma separated. If multiple should be comma-separated.
* `argMd =` - *Optional*, default value is empty, * `argMd =` - *Optional*, default value is empty,
arguments of the function inserted arguments of the function inserted
*between* elements the first list and *between* elements the first list and
the second list. the second list.
If multiple should be comma separated. If multiple should be comma-separated.
* `argAf =` - *Optional*, default value is empty, * `argAf =` - *Optional*, default value is empty,
arguments of the function inserted arguments of the function inserted
*after* elements the second list. *after* elements the second list.
If multiple should be comma separated. If multiple should be comma-separated.
* `format=` - *Optional*, default value is empty, * `format=` - *Optional*, default value is empty,
indicates a format which should be used indicates a format which should be used
@@ -5759,7 +5798,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
1. `number` - *Optional*, default value is empty, 1. `number` - *Optional*, default value is empty,
indicates numbers of titles to be extracted. indicates numbers of titles to be extracted.
Space separated list is expected. Space-separated list is expected.
If empty or `_ALL_` extract all non-missing. If empty or `_ALL_` extract all non-missing.
*. `type` - *Optional*, default value is `T`. *. `type` - *Optional*, default value is `T`.
@@ -5918,7 +5957,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
**EXAMPLE 4.** Macro-Functions works too: **EXAMPLE 4.** Macro-Functions works too:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%let x = A B C; %let x = A B C;
%put %iffunc((%scan(&x.,1)=A),Stats with "A"., Does not start with "A".); %put %iffunc((%scan(&x.,1)=A),Starts with "A"., Does not start with "A".);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -6126,7 +6165,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
### EXAMPLES AND USECASES: #################################################### ### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Space separated list of capital letters from A to Z: **EXAMPLE 1.** Space-separated list of capital letters from A to Z:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%put %letters(1:26:1); %put %letters(1:26:1);
@@ -6624,9 +6663,9 @@ The basic syntax is the following, the `<...>` means optional parameters:
**Arguments description**: **Arguments description**:
1. `list` - *Required*, a list of elements to be repeated. 1. `list` - *Required*, a list of elements to be repeated.
List can be space or comma separated. List can be space or comma-separated.
Elements can be in quotes. Elements can be in quotes.
For comma separated list add brackets For comma-separated list add brackets
e.g., `%repList((A,B,C,D),times=5)`. e.g., `%repList((A,B,C,D),times=5)`.
The list separators are: `<{[( ,;)]}>`. The list separators are: `<{[( ,;)]}>`.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

7035
hist/1.38.0/baseplus.md Normal file

File diff suppressed because it is too large Load Diff

BIN
hist/1.38.0/baseplus.zip Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB