Get or set a derived variable's expression
Get a derived variable's derivation formula as a CrunchExpr with
derivation(variable). Set (change) a derived variable's derivation with
derivation(variable) <- expression.
derivation(x) derivation(x) <- value is.derived(x) is.derived(x) <- value ## S4 method for signature 'CrunchVariable' derivation(x) ## S4 replacement method for signature 'CrunchVariable,ANY' derivation(x) <- value ## S4 replacement method for signature 'CrunchVariable,'NULL'' derivation(x) <- value ## S4 method for signature 'CrunchVariable' is.derived(x) ## S4 replacement method for signature 'CrunchVariable,logical' is.derived(x) <- value
x | 
 a variable  | 
value | 
 a   | 
To break a derivation link between a derived variable and the originating variable, set
the derivation value of the derived variable to NULL with derivation(variable) <- NULL
is.derived can be used to see if a variable is derived or not. Additionally
setting a derived variable's is.derived to FALSE will break the derivation link between
two variables.
a CrunchExpr of the derivation for derivation; a logical for
is.derived; the variable given in x for is.derived<- returns
## Not run: 
ds$derived_v1 <- ds$v1 + 5
derivation(ds$derived_v1)
# Crunch expression: v1 + 5
derivation(ds$derived_v1) <- ds$v1 + 10
derivation(ds$derived_v1)
# Crunch expression: v1 + 10
is.derived(ds$derived_v1)
# TRUE
# to integrate or instantiate the variable in place (remove the link between
# variable v1 and the derivation) you can:
derivation(ds$derived_v1) <- NULL
# after integrating, the derived variable is no longer derived.
is.derived(ds$derived_v1)
# FALSE
# Derivations can be updated with arbitrary expressions.
# Consider a numeric case variable that combines weights
# calculated separately in a separate variable
# for each of several waves:
ds$weight <- makeCaseWhenVariable(
    ds$wave == 1 ~ ds$weight_wave1,
    ds$wave == 2 ~ ds$weight_wave2,
    ds$wave == 3 ~ ds$weight_wave3,
    name = "Weight"
)
# When a new wave is added, update the derivation
# of the weight to add the new condition and source
# column.
derivation(ds$weight) <- caseWhenExpr(
    ds$wave == 1 ~ ds$weight_wave1,
    ds$wave == 2 ~ ds$weight_wave2,
    ds$wave == 3 ~ ds$weight_wave3,
    ds$wave == 4 ~ ds$weight_wave4
)
## End(Not run)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.