> ## Documentation Index
> Fetch the complete documentation index at: https://docs.graphext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# link_rows_by_id

> Create network links using one or more lists of target ids. 

For each row this step iterates over the lists of IDs in one or more target columns, and if a ID exists also
in the source column, the corresponding rows will be connected.

Note that while this step allows multiple input columns to be used as link *targets*, it does not allow for the
specification of link *weights*. See the step `link_rows` for creating weighted networks. All link weights will
be set to 1.0 by default. But see the weight\_factor param to specify another constant instead.

## Usage

The following example shows how the step can be used in a recipe.

<Accordion title="Examples" icon="code" defaultOpen="true">
  <Tabs>
    <Tab title="Example 1">
      Given a dataset `ds`, where each row is associated with a twitter user (identified by column `account_id`), the following line connects each of these users with other users specified in columns `reply_ids` and `mention_ids`.

      ```stan theme={null}
      link_rows_by_id(ds.account_id, ds.reply_ids, ds.mention_ids) -> (ds.targets, ds.weights)
      ```
    </Tab>

    <Tab title="Signature">
      General syntax for using the step in a recipe. Shows the inputs and outputs the step is expected to receive and will produce respectively. For futher details see sections below.

      ```stan theme={null}
      link_rows_by_id(source_id: number|category, *target_ids: number|category|list[number]|list[category], {
          "param": value,
          ...
      }) -> (targets: column, weights: column)
      ```
    </Tab>
  </Tabs>
</Accordion>

## Inputs & Outputs

The following are the inputs expected by the step and the outputs it produces. These are generally
columns (`ds.first_name`), datasets (`ds` or `ds[["first_name", "last_name"]]`) or models (referenced
by name e.g. `"churn-clf"`).

<Accordion title="Inputs" icon="right-to-bracket">
  <ParamField path="source_id" type="column[number|category]" required>
    A column of IDs corresponding to the nodes/rows acting as the source of a link.
  </ParamField>

  <ParamField path="*target_ids" type="column[number|category|list[number]|list[category]]">
    One or more columns of IDs (can be lists) corresponding to the target of a link.
  </ParamField>
</Accordion>

<Accordion title="Outputs" icon="right-from-bracket">
  <ParamField path="targets" type="column" required>
    A column containing for each item a list of row numbers identfying all other items it
    will be linked to.
  </ParamField>

  <ParamField path="weights" type="column" required>
    A column containing for each item a list of weights identfying the "importance" of each
    link to other items identified in the `targets` column (counting how many times a consecutive
    pair of items was found together in the sequences).
  </ParamField>
</Accordion>

## Configuration

The following parameters can be used to configure the behaviour of the step by including them in
a json object as the last "input" to the step, i.e. `step(..., {"param": "value", ...}) -> (output)`.

<Accordion title="Parameters" defaultOpen="true" icon="sliders">
  <ParamField path="weight_factor" type="number" default="1.0">
    Multiply link weights by this number.
  </ParamField>
</Accordion>
