mirror of
https://github.com/SASPAC/baseplus.git
synced 2025-12-11 06:44:35 +00:00
The BasePlus package [ver. 1.23.0]
The BasePlus package [ver. 1.23.0] Three new utility macros for the BasePlus: - `%intsList()` - prints a space separated list of integers, - `%splitDSIntoBlocks()` - splits dataset into block of given size (and one[the last] possibly smaller) - `%splitDSIntoParts()` - splits dataset into given number of parts (of approximately same size) Macros `splitDSIntoBlocks` and `splitDSIntoParts` supports *BASE* and *SPDE* engines. Documentation updated.
This commit is contained in:
@@ -27,10 +27,16 @@ format x bool.;
|
|||||||
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result)
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result)
|
||||||
|
|
||||||
%put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$);
|
%put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$);
|
||||||
|
|
||||||
|
%put %intsList(42);
|
||||||
|
|
||||||
|
%splitDSIntoBlocks(5, sashelp.class, classBlock)
|
||||||
|
|
||||||
|
%splitDSIntoParts(7, sashelp.cars, carsPart)
|
||||||
```
|
```
|
||||||
and more.
|
and more.
|
||||||
|
|
||||||
SHA256 digest for the latest version of `BasePlus`: F*F39F38CE80A5D8EED3BC9F2413CD6DEF38E8657E5DCF427CBA8938EB8C4350B6
|
SHA256 digest for the latest version of `BasePlus`: F*625E56B017C4AA8D436959C0A03C8503773A9A3823D43FA9E0326276E52DA6F2
|
||||||
|
|
||||||
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
|
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
|
||||||
|
|
||||||
|
|||||||
313
baseplus.md
313
baseplus.md
@@ -52,6 +52,9 @@
|
|||||||
* [`%bpPIPE()` macro](#bppipe-macro)
|
* [`%bpPIPE()` macro](#bppipe-macro)
|
||||||
* [`%dirsAndFiles()` macro](#dirsandfiles-macro)
|
* [`%dirsAndFiles()` macro](#dirsandfiles-macro)
|
||||||
* [`%repeatTxt()` macro](#repeattxt-macro)
|
* [`%repeatTxt()` macro](#repeattxt-macro)
|
||||||
|
* [`%intsList()` macro](#intslist-macro)
|
||||||
|
* [`%splitDSIntoBlocks()` macro](#splitdsintoblocks-macro)
|
||||||
|
* [`%splitDSIntoParts()` macro](#splitdsintoparts-macro)
|
||||||
|
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
|
|
||||||
@@ -248,50 +251,54 @@ Package contains:
|
|||||||
6. macro dirsandfiles
|
6. macro dirsandfiles
|
||||||
7. macro functionexists
|
7. macro functionexists
|
||||||
8. macro getvars
|
8. macro getvars
|
||||||
9. macro ldsn
|
9. macro intslist
|
||||||
10. macro ldsnm
|
10. macro ldsn
|
||||||
11. macro lvarnm
|
11. macro ldsnm
|
||||||
12. macro lvarnmlab
|
12. macro lvarnm
|
||||||
13. macro qdeduplistx
|
13. macro lvarnmlab
|
||||||
14. macro qgetvars
|
14. macro qdeduplistx
|
||||||
15. macro qzipevalf
|
15. macro qgetvars
|
||||||
16. macro raincloudplot
|
16. macro qzipevalf
|
||||||
17. macro repeattxt
|
17. macro raincloudplot
|
||||||
18. macro symdelglobal
|
18. macro repeattxt
|
||||||
19. macro unziplibrary
|
19. macro splitdsintoblocks
|
||||||
20. macro zipevalf
|
20. macro splitdsintoparts
|
||||||
21. macro ziplibrary
|
21. macro symdelglobal
|
||||||
22. format bool
|
22. macro unziplibrary
|
||||||
23. format boolz
|
23. macro zipevalf
|
||||||
24. format ceil
|
24. macro ziplibrary
|
||||||
25. format floor
|
25. format bool
|
||||||
26. format int
|
26. format boolz
|
||||||
27. functions arrfill
|
27. format ceil
|
||||||
28. functions arrfillc
|
28. format floor
|
||||||
29. functions arrmissfill
|
29. format int
|
||||||
30. functions arrmissfillc
|
30. functions arrfill
|
||||||
31. functions arrmisstoleft
|
31. functions arrfillc
|
||||||
32. functions arrmisstoleftc
|
32. functions arrmissfill
|
||||||
33. functions arrmisstoright
|
33. functions arrmissfillc
|
||||||
34. functions arrmisstorightc
|
34. functions arrmisstoleft
|
||||||
35. functions bracketsc
|
35. functions arrmisstoleftc
|
||||||
36. functions bracketsn
|
36. functions arrmisstoright
|
||||||
37. functions catxfc
|
37. functions arrmisstorightc
|
||||||
38. functions catxfi
|
38. functions bracketsc
|
||||||
39. functions catxfj
|
39. functions bracketsn
|
||||||
40. functions catxfn
|
40. functions catxfc
|
||||||
41. functions deldataset
|
41. functions catxfi
|
||||||
42. functions semicolonc
|
42. functions catxfj
|
||||||
43. functions semicolonn
|
43. functions catxfn
|
||||||
44. format brackets
|
44. functions deldataset
|
||||||
45. format semicolon
|
45. functions semicolonc
|
||||||
46. proto qsortincbyprocproto
|
46. functions semicolonn
|
||||||
47. functions frommissingtonumberbs
|
47. format brackets
|
||||||
48. functions fromnumbertomissing
|
48. format semicolon
|
||||||
49. functions quicksort4notmiss
|
49. proto qsortincbyprocproto
|
||||||
50. functions quicksorthash
|
50. functions frommissingtonumberbs
|
||||||
51. functions quicksorthashsddv
|
51. functions fromnumbertomissing
|
||||||
52. functions quicksortlight
|
52. functions quicksort4notmiss
|
||||||
|
53. functions quicksorthash
|
||||||
|
54. functions quicksorthashsddv
|
||||||
|
55. functions quicksortlight
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it
|
Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it
|
||||||
@@ -301,7 +308,7 @@ localization (only if additional content was deployed during the installation pr
|
|||||||
* SAS package generated by generatePackage, version 20230411 *
|
* SAS package generated by generatePackage, version 20230411 *
|
||||||
|
|
||||||
The SHA256 hash digest for package BasePlus:
|
The SHA256 hash digest for package BasePlus:
|
||||||
`F*F39F38CE80A5D8EED3BC9F2413CD6DEF38E8657E5DCF427CBA8938EB8C4350B6`
|
`F*625E56B017C4AA8D436959C0A03C8503773A9A3823D43FA9E0326276E52DA6F2`
|
||||||
|
|
||||||
---
|
---
|
||||||
# Content description ############################################################################################
|
# Content description ############################################################################################
|
||||||
@@ -4224,6 +4231,222 @@ run;
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## >>> `%intsList()` macro: <<< <a name="intslist-macro"></a> #######################
|
||||||
|
|
||||||
|
The intsList() macro function allows to print a list of
|
||||||
|
integers starting from `start` up to `end` incremented by `by`
|
||||||
|
and separated by `sep=`.
|
||||||
|
|
||||||
|
If `start`, `end` or `by` are non-integers the are converted to integers.
|
||||||
|
|
||||||
|
See examples below for the details.
|
||||||
|
|
||||||
|
The `%intsList()` macro executes like a pure macro code.
|
||||||
|
|
||||||
|
### SYNTAX: ###################################################################
|
||||||
|
|
||||||
|
The basic syntax is the following, the `<...>` means optional parameters:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%intsList(
|
||||||
|
start
|
||||||
|
<,end>
|
||||||
|
<,by>
|
||||||
|
<,sep=>
|
||||||
|
)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Arguments description**:
|
||||||
|
|
||||||
|
1. `start` - *Required*, the first value of the list.
|
||||||
|
If `end` is missing then the list is generated
|
||||||
|
from 1 to `start` by 1.
|
||||||
|
|
||||||
|
2. `end` - *Required/Optional*, the last value of the list.
|
||||||
|
|
||||||
|
3. `by` - *Required/Optional*, the increment of the list.
|
||||||
|
If missing then set to `1`.
|
||||||
|
*Cannot* be equal to `0`.
|
||||||
|
|
||||||
|
* `s = %str( )` - *Optional*, it is a separator between
|
||||||
|
elements of the list. Default value is space.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### EXAMPLES AND USECASES: ####################################################
|
||||||
|
|
||||||
|
**EXAMPLE 1.** Simple list of integers from 1 to 10 by 1:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put %intsList(10);
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 2.** Ten copies of `sashelp.class` in `test11` to `test20`:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
data
|
||||||
|
%zipEvalf(test, %intsList(11,20))
|
||||||
|
;
|
||||||
|
set sashelp.class;
|
||||||
|
run;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 3.** Non-integers are converted to integers, the list is `1 3 5`:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put %intsList(1.1,5.2,2.3);
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 4.** A list with a separator:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put %intsList(1,5,2,sep=+);
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## >>> `%splitDSIntoBlocks()` macro: <<< <a name="splitdsintoblocks-macro"></a> #######################
|
||||||
|
|
||||||
|
The splitDSIntoBlocks() macro allows to split the `set` dataset into blocks
|
||||||
|
of size `blockSize` in datasets: `prefix1` to `prefixN`.
|
||||||
|
|
||||||
|
The last dataset may have less observations then the `blockSize`.
|
||||||
|
|
||||||
|
Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets.
|
||||||
|
|
||||||
|
See examples below for the details.
|
||||||
|
|
||||||
|
### SYNTAX: ###################################################################
|
||||||
|
|
||||||
|
The basic syntax is the following, the `<...>` means optional parameters:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%splitDSIntoBlocks(
|
||||||
|
blockSize
|
||||||
|
<,set>
|
||||||
|
<,prefix>
|
||||||
|
)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Arguments description**:
|
||||||
|
|
||||||
|
1. `blockSize` - *Required*, the size of the block of data,
|
||||||
|
in other words number of observations in
|
||||||
|
one block of split data.
|
||||||
|
Block size must be positive integer.
|
||||||
|
|
||||||
|
2. `set` - *Required/Optional*, the name of the dataset to split.
|
||||||
|
If empty then `&syslast.` is used.
|
||||||
|
|
||||||
|
3. `prefix` - *Required/Optional*, the name-prefix for new datasets.
|
||||||
|
If missing then set to `part`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### EXAMPLES AND USECASES: ####################################################
|
||||||
|
|
||||||
|
**EXAMPLE 1.** Split `sashelp.class` into 5 elements datasets ABC1 to ABC4:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%splitDSIntoBlocks(5,sashelp.class,ABC)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `partN` datasets:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
data lastData;
|
||||||
|
set sashelp.cars;
|
||||||
|
run;
|
||||||
|
|
||||||
|
%splitDSIntoBlocks(123)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 3.** Works with `SPDE` engine too:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
options dlcreatedir;
|
||||||
|
libname test "%sysfunc(pathname(work))/testSPDE";
|
||||||
|
libname test;
|
||||||
|
libname test SPDE "%sysfunc(pathname(work))/testSPDE";
|
||||||
|
|
||||||
|
data test.test;
|
||||||
|
set sashelp.cars;
|
||||||
|
run;
|
||||||
|
|
||||||
|
%splitDSIntoBlocks(100,test.test,work.spde)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## >>> `%splitDSIntoParts()` macro: <<< <a name="splitdsintoparts-macro"></a> #######################
|
||||||
|
|
||||||
|
The splitDSIntoParts() macro allows to split the `set` dataset into `parts` parts
|
||||||
|
of approximately `NOBS/parts` size in datasets: `prefix1` to `prefixN`.
|
||||||
|
|
||||||
|
The splitDSIntoParts() macro internally runs the splitDSIntoBlocks() macro.
|
||||||
|
|
||||||
|
Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets.
|
||||||
|
|
||||||
|
See examples below for the details.
|
||||||
|
|
||||||
|
### SYNTAX: ###################################################################
|
||||||
|
|
||||||
|
The basic syntax is the following, the `<...>` means optional parameters:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%splitDSIntoParts(
|
||||||
|
parts
|
||||||
|
<,set>
|
||||||
|
<,prefix>
|
||||||
|
)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Arguments description**:
|
||||||
|
|
||||||
|
1. `parts` - *Required*, the number of parts to split data into.
|
||||||
|
Number of parts must be positive integer.
|
||||||
|
|
||||||
|
2. `set` - *Required/Optional*, the name of the dataset to split.
|
||||||
|
If empty then `&syslast.` is used.
|
||||||
|
|
||||||
|
3. `prefix` - *Required/Optional*, the name-prefix for new datasets.
|
||||||
|
If missing then set to `part`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### EXAMPLES AND USECASES: ####################################################
|
||||||
|
|
||||||
|
**EXAMPLE 1.** Split `sashelp.cars` into 7 parts: datasets carsInParts1 to carsInParts7:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%splitDSIntoParts(7,sashelp.cars, carsInParts)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `part3` datasets:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
data lastData;
|
||||||
|
set sashelp.cars;
|
||||||
|
run;
|
||||||
|
|
||||||
|
%splitDSIntoBlocks(3)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 3.** Works with `SPDE` engine too:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
options dlcreatedir;
|
||||||
|
libname test "%sysfunc(pathname(work))/testSPDE";
|
||||||
|
libname test;
|
||||||
|
libname test SPDE "%sysfunc(pathname(work))/testSPDE";
|
||||||
|
|
||||||
|
data test.test;
|
||||||
|
set sashelp.cars;
|
||||||
|
run;
|
||||||
|
|
||||||
|
%splitDSIntoParts(3,test.test,work.spde)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## License ####################################################################
|
## License ####################################################################
|
||||||
|
|
||||||
Copyright (c) since 2020 Bartosz Jablonski
|
Copyright (c) since 2020 Bartosz Jablonski
|
||||||
|
|||||||
BIN
baseplus.zip
BIN
baseplus.zip
Binary file not shown.
BIN
hist/1.23.0/baseplus.zip
Normal file
BIN
hist/1.23.0/baseplus.zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user