The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Type: Package
Title: 'SAS' IF Style Data Step Logic for Data Tables
Version: 0.1.2
Description: Provides 'SAS'-style IF/ELSE chains, independent IF rules, and DELETE logic for 'data.table', enabling clinical programmers to express Study Data Tabulation Model (SDTM) and Analysis Data Model (ADaM)-style derivations in familiar SAS-like syntax. Methods are informed by clinical data standards described in CDISC SDTM and ADaM implementation guides. See https://www.cdisc.org/standards/foundational/sdtm and https://www.cdisc.org/standards/foundational/adam.
License: MIT + file LICENSE
Encoding: UTF-8
Imports: data.table
RoxygenNote: 7.3.3
NeedsCompilation: no
Packaged: 2026-01-30 03:24:58 UTC; Thiyagarajan
Author: Thiyagarajan Chandrasekaran [aut, cre]
Maintainer: Thiyagarajan Chandrasekaran <chandrt23@gmail.com>
Repository: CRAN
Date/Publication: 2026-02-03 12:40:02 UTC

SAS IF-style data step logic for data.table

Description

Provides SAS-style IF/ELSE chains, independent IF rules, and DELETE logic for fast, vectorized transformations on data.table objects. This enables clinical programmers to express SDTM and ADaM-style derivations in familiar SAS-like syntax while leveraging data.table performance.

Usage

data_step(dt, ..., copy = TRUE)

Arguments

dt

A data.table.

...

One or more rule objects created by if_do(), else_if_do(), else_do(), if_independent(), or delete_if().

copy

Logical. If TRUE (default), a copy of dt is modified and returned.

Value

A data.table with applied transformations.

Examples

library(data.table)

dt <- data.table(
  AGE = c(40, 60, 80),
  SEX = c("M", "F", "M")
)

out <- data_step(
  dt,
  if_do(AGE <= 45, GROUP = 1),
  else_if_do(AGE <= 70, GROUP = 2),
  else_do(GROUP = 3),
  if_independent(SEX == "M", MALE = 1)
)

out


Create a SAS-style DELETE rule

Description

Creates a DELETE rule to remove rows from the data.table when condition is TRUE.

Usage

delete_if(condition)

Arguments

condition

Logical condition evaluated on the data.table.

Value

A rule object for data_step().


Create a SAS-style ELSE rule

Description

Creates an ELSE rule for use inside data_step().

Usage

else_do(...)

Arguments

...

Named assignments to apply when no previous IF/ELSE IF matched.

Value

A rule object for data_step().


Create a SAS-style ELSE IF rule

Description

Creates an ELSE IF rule for use inside data_step().

Usage

else_if_do(condition, ...)

Arguments

condition

Logical condition evaluated on the data.table.

...

Named assignments to apply when condition is TRUE.

Value

A rule object for data_step().


Create a SAS-style IF rule

Description

Creates a mutually exclusive IF rule for use inside data_step().

Usage

if_do(condition, ...)

Arguments

condition

Logical condition evaluated on the data.table.

...

Named assignments to apply when condition is TRUE.

Value

A rule object for data_step().


Create an independent SAS-style IF rule

Description

Creates an independent IF rule that is evaluated regardless of IF/ELSE chains.

Usage

if_independent(condition, ...)

Arguments

condition

Logical condition evaluated on the data.table.

...

Named assignments to apply when condition is TRUE.

Value

A rule object for data_step().

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.