join_node_attrs {DiagrammeR} | R Documentation

## Join new node attribute values using a data frame

### Description

Join new node attribute values in a left join using a data frame. The use of a left join in this function allows for no possibility that nodes in the graph might be removed after the join.

### Usage

    join_node_attrs(graph, df, by_graph = NULL, by_df = NULL)

### Arguments

`graph` | a graph object of class `dgr_graph`.
`df` | the data frame to use for joining.
`by_graph` | optional specification of the column in the graph's internal node data frame for the left join. If both `by_graph` and `by_df` are not provided, then a natural join will occur if there are columns in the graph's ndf and in `df` with identical names.
`by_df` | optional specification of the column in `df` for the left join. If both `by_graph` and `by_df` are not provided, then a natural join will occur if there are columns in the graph's ndf and in `df` with identical names. `dgr_graph` that is created using `create_graph`.

### Value

a graph object of class `dgr_graph`.

### Examples

    # Set a seed
    set.seed(23)

    # Create a simple graph
    graph <-
      create_graph() %>%
      add_n_nodes(n = 5) %>%
      add_edges_w_string(
        edges = "1->2 1->3 2->4 2->5 3->5")

    # Create a data frame with node ID values and a
    # set of numeric values
    df <-
      data.frame(
        values = round(rnorm(6, 5), 2),
        id = 1:6)

    # Join the values in the data frame to the
    # graph's nodes; this works as a left join using
    # identically-named columns in the graph and the df
    # (in this case the `id` column is common to both)
    graph <-
      graph %>%
      join_node_attrs(
        df = df)

    # Get the graph's internal ndf to show that the
    # join has been made
    get_node_df(graph)
    #>   id type label values
    #> 1  1 <NA>  <NA>   6.00
    #> 2  2 <NA>  <NA>   6.11
    #> 3  3 <NA>  <NA>   4.72
    #> 4  4 <NA>  <NA>   6.02
    #> 5  5 <NA>  <NA>   5.05

    # Get betweenness values for each node and
    # add them as a node attribute (Note the
    # common column name `id` in the different
    # tables results in a natural join)
    graph <-
      graph %>%
      join_node_attrs(
        df = get_betweenness(.))

    # Get the graph's internal ndf to show that
    # this join has been made
    get_node_df(graph)
    #>   id type label values betweenness
    #> 1  1 <NA>  <NA>   6.00           2
    #> 2  2 <NA>  <NA>   6.11           7
    #> 3  3 <NA>  <NA>   4.72           1
    #> 4  4 <NA>  <NA>   6.02           0
    #> 5  5 <NA>  <NA>   5.05           2

[Package DiagrammeR version 0.9.2 Index]