Skip to contents

Converts wide format sequence data into useful formats for analysis, such as frequency table, one-Hot encoding, or edge list (graph format).

Usage

convert(data, cols = tidyselect::everything(), format = "frequency")

Arguments

data

[data.frame]
Sequence data in wide format (rows are sequences, columns are time points). The input should be coercible to a data.frame object.

cols

[tidy-select]
A tidy selection of columns that should be considered as sequence data. By default, all columns are used.

format

[character(1): "frequency"]
The data format to convert into:

  • "frequency": Counts of each state per sequence.

  • "onehot": Presence/absence (1/0) of each state per sequence.

  • "edgelist": (state, next state) pairs.

  • "reverse": Same as "edgelist" but in the reverse direction, i.e., (state, previous state) pairs.

Value

A tibble structured according to the requested format.

Examples

convert(engagement, format = "frequency")
#> # A tibble: 1,000 × 4
#>      .id Active Average Disengaged
#>    <int>  <int>   <int>      <int>
#>  1     1     17       3          3
#>  2     2     17       4          2
#>  3     3     10       4         10
#>  4     4      8       3         13
#>  5     5     15       5          4
#>  6     6     19       1          3
#>  7     7     16       5          2
#>  8     8     10       5          8
#>  9     9      1      10         12
#> 10    10     20       1          3
#> # ℹ 990 more rows
convert(engagement, format = "onehot")
#> # A tibble: 1,000 × 4
#>      .id Average Active Disengaged
#>    <int>   <dbl>  <dbl>      <dbl>
#>  1     1       1      1          1
#>  2     2       1      1          1
#>  3     3       1      1          1
#>  4     4       1      1          1
#>  5     5       1      1          1
#>  6     6       1      1          1
#>  7     7       1      1          1
#>  8     8       1      1          1
#>  9     9       1      1          1
#> 10    10       1      1          1
#> # ℹ 990 more rows
convert(engagement, format = "edgelist")
#> # A tibble: 23,555 × 3
#>      .id from    to    
#>    <int> <chr>   <chr> 
#>  1     1 Average Active
#>  2     1 Active  Active
#>  3     1 Active  Active
#>  4     1 Active  Active
#>  5     1 Active  Active
#>  6     1 Active  Active
#>  7     1 Active  Active
#>  8     1 Active  Active
#>  9     1 Active  Active
#> 10     1 Active  Active
#> # ℹ 23,545 more rows
convert(engagement, format = "reverse")
#> # A tibble: 23,555 × 3
#>      .id state  previous
#>    <int> <chr>  <chr>   
#>  1     1 Active Average 
#>  2     1 Active Active  
#>  3     1 Active Active  
#>  4     1 Active Active  
#>  5     1 Active Active  
#>  6     1 Active Active  
#>  7     1 Active Active  
#>  8     1 Active Active  
#>  9     1 Active Active  
#> 10     1 Active Active  
#> # ℹ 23,545 more rows