Redefines a variate or text so that its values are unique (R.W. Payne).
Options
INCREMENT = scalar |
Increment to use to modify duplicated numbers; default * i.e. a suitable (small) value is determined automatically |
---|---|
ADDTO = string token |
Whether to add the increment to the value or the absolute value of duplicated numbers (value , absolutevalue ); default abso |
Parameters
OLDVECTOR = variates or texts |
Vectors whose values are to be made unique |
---|---|
NEWVECTOR = variates or texts |
New vectors with unique values; if unset, the values of the corresponding OLDVECTOR are replaced |
CHANGED = scalars |
Indicates whether the values have changed |
Description
FUNIQUEVALUES
allows you to redefine a variate or a text so that its values become unique. The variates or texts are listed by the OLDVECTOR
parameter, and the NEWVECTOR
parameter can save new variates or texts with the redefined values. If no NEWVECTOR
is defined for one of the variates or texts in the OLDVECTOR
list, the new values are put into the original variate or text. The CHANGED
parameter can save a scalar that set to one if the values were changed; otherwise it is set to zero.
FUNIQUEVALUES
appends the characters '_1'
, _2'
and so on to each duplicate value of a text. By default, with a variate, FUNIQUEVALUES
adds a small increment to each zero or positive duplicate value, and subtracts that increment from each negative duplicate value. If you would prefer to add the increment to both positive and negative values, you can set option ADDTO=value
. (This indicates that the increment is to be added to the value, rather than the absolute value of the duplicate number.) The default increment is taken as the largest power of 10 that is small enough to modify each duplicate value while preserving their numerical order. So, for example, if you had values 1, 2, 3, 2, 5 and 2, the increment would be 0.1; the second instance of 2 would become 2.1, and the third would become 2.2. As another example, if the values were 0.1, 0.2, 0.3, 0.2, 0,5 and 0.2, the increment would be 0.01; the second instance of 0.2 would then become 0.21, and the third would become 0.22. Alternatively, you can supply your own increment using the INCREMENT
option.
Options: INCREMENT
, ADDTO
.
Parameters: OLDVECTOR
, NEWVECTOR
, CHANGED
.
Action with RESTRICT
Any restrictions are ignored.
See also
Procedure: FACUNIQUE
.
Commands for: Calculations and manipulation.
Example
CAPTION 'FACUNIQUEVALUES example'; STYLE=meta VARIATE [VALUES=2,5,2,3,6,8,5,9,5] v1 TEXT [VALUES=b,e,b,c,f,h,e,i,e] t1 CALCULATE v2 = v1 / 10 FUNIQUEVALUES v1,v2,t1; NEWVECTOR=nv1,nv2,nt1 PRINT v1,nv1,v2,nv2,t1,nt1; FIELD=6; DECIMALS=2 FUNIQUEVALUES [INCREMENT=1] v2; NEWVECTOR=nv2 PRINT v2,nv2; FIELD=6; DECIMALS=2