使用 networkD3 的桑基图 - 创建链接

Sankey Chart with networkD3 - Creating Links

我正在尝试开发桑基图来可视化网站上的客户旅程。我的数据有两个字段:Session_IDPage_Name。我将页面深度限制为每个会话最多 6 页。

我能够创建节点,但无法创建链接。链接的形式必须是(来源、目标、频率)。下面是我的数据结构:

test_data = data.frame(session = rep(1:4, each = 4),
                       page = c("a","b","c","d", "a","c","d","e","a","b","d","c","a","d","e","f"))

这应该是最终数据:

a,b,2
b,c,1
c,d,2
a,c,1
d,e,2
b,d,1
d,c,1
a,d,1
d,f,1

您可以使用 dplyr 执行此操作 - 由于页面按访问顺序排列,您可以使用 lead() 获取下一页:

library(dplyr)

test_data %>%
    group_by(session) %>%
    mutate(next_page = lead(page)) %>%
    ungroup() %>%
    count(page, next_page) %>%
    filter(! is.na(next_page))