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

时间:2015-07-08 23:33:18

标签: r igraph

我有会话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中以制作活动的网络图。如果有意义,会话中可以有多达44个不同的页面访问。

1 个答案:

答案 0 :(得分:1)

假设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)]