These functions offer ways to modify data held about how nodes change over time. They include:

  • bind_changes() adds a table of changes to the nodes of a network.

  • mutate_changes() can be used to update network changes.

  • filter_changes() is used to subset network changes.

  • gather_changes() is similar to filter_changes(), but collects the cumulative changes up to a time point.

  • apply_changes() applies the changes collected up to a time point to a network, removing the changes.

An example of when this might be useful is to track change in the composition of a network (when nodes are present or absent over time), though the function can flexibly accommodate changes in other nodal attributes.

delete_changes(.data)

mutate_changes(.data, ...)

bind_changes(.data, changes, var, ...)

filter_changes(.data, ..., .by = NULL)

select_changes(.data, ..., .by = NULL)

arrange_changes(.data, ...)

rename_changes(.data, ...)

gather_changes(.data, time)

apply_changes(.data, time)

Arguments

.data

An object of a {manynet}-consistent class:

  • adjacency or incidence matrix from {base} R

  • edgelist data.frame from {base} R or tbl/tbl_df from {tibble}

  • stocnet stocnet, from the {manynet} package

  • igraph igraph, from the {igraph} package

  • network network, from the {network} package

  • tidygraph tbl_graph, from the {tidygraph} package

...

Additional parameters and arguments passed on internally.

changes

A data frame containing the changes to be added. This should have columns time, node (labelled), var (referencing an existing nodal attribute), and value (which can be of any class).

var

A character string specifying the nodal variable to which the changes apply, if not already specified in the changes data frame. This is only used when the changes data frame does not already have a var column, and is ignored otherwise.

.by

An attribute name to join objects by. By default, NULL.

time

A time point or wave at which to present the network.

Value

A data object of the same class as the function was given.

Details

Not all functions have methods available for all object classes. Below are the currently implemented S3 methods for these functions:

                data.frame default igraph stocnet tbl_graph
apply_changes                    *                        *
arrange_changes                  *      *       *
bind_changes                     *      *       *         *
delete_changes                   *      *       *
filter_changes                   *      *       *
gather_changes                   *      *
mutate_changes                   *              *         *
rename_changes           *       *      *       *
select_changes           *       *      *       *

If a method is not available for a particular class, but a default method is, the default method will attempt to coerce the object to a class for which a method is defined, and then coerce the output back to the original class. If no method is available for any class, an error will be thrown.

Examples

filter_changes(fict_starwars, node == "Anakin")
#> 
#> ── # Star Wars network data ────────────────────────────────────────────────────
#> # A longitudinal, labelled, complex, weighted, directed network of 110
#> characters and 563 interaction arcs over 7 waves
#> 
#> ── Nodes 
#> # A tibble: 110 × 12
#>   name            species homeworld sex   height hair_color eye_color skin_color
#>   <chr>           <chr>   <chr>     <chr>  <int> <chr>      <chr>     <chr>     
#> 1 Admiral Ackbar  Mon Ca… Mon Cala  male     180 none       orange    brown mot…
#> 2 Admiral Statura Human   Garel     male     172 black      brown     light     
#> 3 Anakin          Human   Tatooine  male     188 blond      blue      fair      
#> 4 Bail Organa     Human   Alderaan  male     191 black      brown     tan       
#> # ℹ 106 more rows
#> # ℹ 4 more variables: birth_year <dbl>, mass <dbl>, faction <chr>, active <lgl>
#> 
#> ── Changes 
#> # A tibble: 0 × 4
#> # ℹ 4 variables: time <int>, node <int>, var <chr>, value <chr>
#> 
#> ── Ties 
#> # A tibble: 563 × 4
#>    from    to weight  wave
#>   <int> <int>  <int> <int>
#> 1    80    73     11     1
#> 2    80    79     14     1
#> 3    80     3     16     1
#> 4    80   106      3     1
#> # ℹ 559 more rows
#> 
select_changes(fict_starwars, node)
#> ── # Star Wars network data ────────────────────────────────────────────────────
#> # A longitudinal, labelled, complex, weighted, directed network of 110
#> characters and 563 interaction arcs over 7 waves
#> 
#> ── Nodes 
#> # A tibble: 110 × 12
#>   name            species homeworld sex   height hair_color eye_color skin_color
#>   <chr>           <chr>   <chr>     <chr>  <int> <chr>      <chr>     <chr>     
#> 1 Admiral Ackbar  Mon Ca… Mon Cala  male     180 none       orange    brown mot…
#> 2 Admiral Statura Human   Garel     male     172 black      brown     light     
#> 3 Anakin          Human   Tatooine  male     188 blond      blue      fair      
#> 4 Bail Organa     Human   Alderaan  male     191 black      brown     tan       
#> # ℹ 106 more rows
#> # ℹ 4 more variables: birth_year <dbl>, mass <dbl>, faction <chr>, active <lgl>
#> 
#> ── Changes 
#> # A tibble: 184 × 1
#>    node
#>   <int>
#> 1     7
#> 2    10
#> 3    11
#> 4    13
#> # ℹ 180 more rows
#> 
#> ── Ties 
#> # A tibble: 563 × 4
#>    from    to weight  wave
#>   <int> <int>  <int> <int>
#> 1    80    73     11     1
#> 2    80    79     14     1
#> 3    80     3     16     1
#> 4    80   106      3     1
#> # ℹ 559 more rows
#> 
gather_changes(fict_starwars, time = 3)
#> # A tibble: 59 × 3
#> # Groups:   node, var [59]
#>     node var        value 
#>    <int> <chr>      <chr> 
#>  1     3 eye_color  yellow
#>  2     3 faction    Sith  
#>  3     3 hair_color none  
#>  4     3 height     202   
#>  5     3 mass       136   
#>  6     3 skin_color white 
#>  7     7 active     FALSE 
#>  8    10 active     FALSE 
#>  9    11 active     FALSE 
#> 10    13 active     FALSE 
#> # ℹ 49 more rows
collect_changes(fict_starwars, time = 3)
#> Warning: 'collect_changes' is deprecated.
#> Use 'gather_changes' instead.
#> See help("Deprecated") and help("manynet-deprecated").
#> # A tibble: 59 × 3
#> # Groups:   node, var [59]
#>     node var        value 
#>    <int> <chr>      <chr> 
#>  1     3 eye_color  yellow
#>  2     3 faction    Sith  
#>  3     3 hair_color none  
#>  4     3 height     202   
#>  5     3 mass       136   
#>  6     3 skin_color white 
#>  7     7 active     FALSE 
#>  8    10 active     FALSE 
#>  9    11 active     FALSE 
#> 10    13 active     FALSE 
#> # ℹ 49 more rows