Skip to content
Back to skills

Datagrok Calc Column

ASecurity

Add a calculated, formula-based column to a dataframe via the datagrok_exec tool. Use whenever the user asks to compute, derive, add, or create a new column from existing columns — LipE, ratios, log/round, heavy atom count, any expression in the Datagrok formula DSL. Replaces hand-written addNewFloat/addNewInt + for-loop with a single formula-attached column that recomputes when source columns change.

  • 74 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
toolsshellexpress

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add datagrok-ai/public --skill datagrok-calc-column --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Datagrok Calc Column?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Datagrok Calc Column
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/datagrok-ai-datagrok-calc-column/badge)](https://www.skillsdirectory.com/skills/datagrok-ai-datagrok-calc-column)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: datagrok-calc-column
description: Add a calculated, formula-based column to a dataframe via the datagrok_exec tool. Use whenever the user asks to compute, derive, add, or create a new column from existing columns — LipE, ratios, log/round, heavy atom count, any expression in the Datagrok formula DSL. Replaces hand-written addNewFloat/addNewInt + for-loop with a single formula-attached column that recomputes when source columns change.
---

# datagrok-calc-column

Use `t.columns.addNewCalculated(name, formula, type?)` in `datagrok_exec` code
to add a formula-driven column. The formula stays attached to the column,
so edits to source columns trigger automatic recompute.

Do **not** use `t.columns.addNewFloat('LipE')` plus a manual `for` loop — that
produces a static column with no formula and no recompute.

## Signature

```ts
await t.columns.addNewCalculated(
  name,              // string
  formula,           // string — DSL, see below
  type?,             // 'auto' (default) | 'double' | 'int' | 'string' | 'bool' | 'datetime'
  treatAsString?,    // boolean — wraps formula in quotes
): Promise<DG.Column>
```

`t` is the current `DG.DataFrame` (injected by `datagrok_exec`). If you have a
DataFrame from elsewhere, replace `t` with that variable.

## Formula DSL — quick reference

| Form                 | Meaning                                            |
|----------------------|----------------------------------------------------|
| `${ColumnName}`      | per-row scalar reference, exact case               |
| `$[ColumnName]`      | whole-column reference (use inside aggregates)     |
| `row`                | current row index                                  |
| `+ - * / ^`          | operators                                          |
| `Round`, `RoundFloat`, `Log`, `Log10`, `Sqrt`, `Abs` | math functions      |
| `Avg($[col])`, `Sum($[col])`, `Min($[col])`, `Max($[col])`, `StDev($[col])` | aggregates over a whole column |
| `Max([${A}, ${B}])`, `Min([${A}, ${B}])` | per-row max / min across columns — the argument is an **array** |
| `Chem:getInchis(${molecule})` | only functions tagged `vectorFunc: 'true'` work here — see [Which functions work in a formula](#which-functions-work-in-a-formula) |
| `"text"`             | string literal (double quotes)                     |

Both operator and function forms parse: `${pIC50} - ${cLogP}` ≡ `Sub(${pIC50}, ${cLogP})`.

Full function catalog: `help/transform/add-new-column.md`.

## Examples

```js
// Lipophilic efficiency
await t.columns.addNewCalculated('LipE', '${pIC50} - ${cLogP}');
```

```js
// Log of activity
await t.columns.addNewCalculated('logIC50', 'Log10(${IC50})');
```

```js
// Per-row maximum of two columns — note the array argument.
await t.columns.addNewCalculated('CS max', 'Max([${Chemical Space X}, ${Chemical Space Y}])');
```

## Which functions work in a formula

A package function (`Chem:foo`, `Admetica:bar`, ...) can be used inside an
`addNewCalculated` formula only if it is tagged `vectorFunc: 'true'` in its
metadata. Everything else must be called imperatively via
`grok.functions.call(...)` in a separate `datagrok_exec` call.

## Chem properties → use the chem catalog, not a formula

For molecular properties (MW, LogP, LogS, HBA, HBD, PSA, rotatable bonds,
stereo centers, molecule charge): use `Chem:addChemPropertiesColumns` (boolean
flags) or `Chem:getProperties(molecules, selected?)` (string list) — see
`datagrok-chem-toolkit`. Example:

```js
await grok.functions.call('Chem:addChemPropertiesColumns', {
  table: t, molecules: t.col('smiles'), MW: true,
});
```

## What this skill does NOT do

- It does not filter, sort, or select rows — those are separate skills.
- It does not add viewers — use `grok.shell.addViewer(...)` or a future viewer skill.
- It does not run server-side scripts — use `grok.functions.call(...)` or the script's registered name.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.