如何将行压缩到 R 中的二进制列表?

How to compress rows to a binary list in R?

我有一个按会话 ID 列出的页面访问列表。我需要将其修改为每页两页的列表,在列表中重复,直到它们全部被使用。 ID 将复制到新行中。我还需要保留先前的节点以与新节点一起使用。

我想转这个:

Session Page
ID1     Home
ID1     Inventory
ID1     Details
ID1     Home
ID2     Inventory
ID2     Home
ID2     Details
ID2     Inventory
ID3     Inventory
ID3     Details
ID4     Details
ID4     Inventory
ID4     Details
ID4     Inventory
ID4     Details
ID4     Inventory
ID4     Details
ID4     Inventory
ID4     Home

进入这个:

Session Node1       Node2
ID1     Home        Inventory
ID1     Inventory   Vehicles
ID1     Vehicle     Home
ID2     Inventory   Home
ID2     Home        Vehicle
ID2     Vehicle     Inventory
ID3     Inventory   Vehicle
ID4     Vehicle     Inventory
ID4     Inventory   Vehicle
ID4     Vehicle     Inventory
ID4     Inventory   Vehicle
ID4     Vehicle     Inventory
ID4     Inventory   Vehicle
ID4     Vehicle     Inventory
ID4     Inventory   Home

最终目的是将其输入igraph做activity的网络图。如果有意义的话,一次会话中可以有多达 44 次不同的页面访问。

假设Vehicle是Details,你的数据存储在mydata

library(data.table)
setDT(mydata)
mydata[, Node2 := Page[.I + 1]]
mydata[, t := Session[.I + 1]]
mydata[Session == t, list(Session,Node1 = Page,Node2)]