# Substitution transformations REPLACE RESCALE SEQ SET SUB SPLIT

## REPLACE

!REPLACE ` old new `
replaces data values
`old`
with new values
`new`
in the current variable.

IF(DataValue.EQ.Old) DataValue=New

Rate !REPLACE -9 0

## RESCALE

!RESCALE ` o s `
rescales the column(s) in the current (!G group of) variable,
or
!G
group of variables, by adding
`o`
and scaling the result by
`s`

Rate !RESCALE -10 0.1

## SEQ

!SEQ
replaces the data value
with a sequential number starting at 1 which increments whenever the
data value changes between successive records; the current field is
presumed to define a factor and the number of levels in the new
factor is set to the number of levels identified in this sequential
process. Missing values remain missing.

plot !=V3 !SEQ

## SET

!SET ` vlist `
for a list of
`n`
values,
`vlist,`
replaces the data values
`1:n`
by the corresponding element from
`vlist;`
data values less than 1 or greater than
`n`
are replaced by zero.
`vlist`
may run over several lines provided each incomplete line
ends with a comma, i.e., a comma is used as a continuation symbol.

treat !L C A B
CvR !=treat !SET 1 -1 -1
group !=treat !SET 1,
2 2 3 3 4

## SUB

!SUB ` vlist `
replaces data values which appear in the list
`vlist`
with their position number. Data values not found in
`vlist`
are set to 0.0.
`vlist may`
run over several lines provided each incomplete line
ends with a comma. ASReml allows for a small rounding error when
matching. It may not distinguish properly if values in
`vlist`
only
differ in the sixth decimal place.

year 3 !SUB 1966 1967 1968

## SPLIT

!SPLIT `g`
creates a new (set of) variables by splitting the data value in an
existing (set of) variables `g`. A number greater than 99 represented as `abcd`
is changed to `ab` and the new variable is `cd`. A number less than 100
represented as `bd`
is changed to `b` and the new variable is `d`.
!SPLIT
provides for the situation when marker data is
given in a compressed form: that is a value of 12 actually means
the allelic pair 1 and 2. The transformation is simple minded.
If the data value is less than 100, it is split into two single digit numbers.
Otherwise the last two digits are split off (so that 123 becomes 1 and 23).
The prototye example is

Lallele !G 10 6
Rallele !G 10 6 !SPLIT Lallele

assuming the data values corresponding to Lallele are drawn
from the set (11:16, 21:26, 31:36, 41:46, 51:56, 61:66).
The transformation replaces the data value with the value of the first digit,
and puts the second digit value into Rallele.
**Return to start**