R &引用;“长”;数据帧到";“交易”;阿鲁尔群岛

R &引用;“长”;数据帧到";“交易”;阿鲁尔群岛,r,R,我正在使用R中的arules包。我有一个事务的“长”数据框a,有两列,如下所示: TID项目编号 2393117 SJUMRE14E 2393118 ATVBCT14 2393127 L0713E 2393128 MCM3100W 2393130 S1017501771 2393131 S6LN13X 2393133 SPCCLI551C 2393133 SPCPGI550BK 2393133 SPCCLI551Y 2393133 SPCCLI551C 正如我们可以看到的,最后4项属于一个事务,

我正在使用R中的
arules包。我有一个事务的“长”数据框
a
,有两列,如下所示:

TID项目编号
2393117 SJUMRE14E
2393118 ATVBCT14
2393127 L0713E
2393128 MCM3100W
2393130 S1017501771
2393131 S6LN13X
2393133 SPCCLI551C
2393133 SPCPGI550BK
2393133 SPCCLI551Y
2393133 SPCCLI551C

正如我们可以看到的,最后4项属于一个事务,我需要将其转换为
“事务”
类,以便在
apriori
函数中使用。
从目前为止我所能发现的情况来看,将其转换为
“事务”
的方法就是这样做的


TransAction这里是一种方法,我发现它更快。其思想是创建一个0/1值的宽数据帧,然后将其馈送到创建事务中。不需要任何拆分

library(dplyr)
library(tidyr)
library(arules)

df <- df %>%
  select(TID, itemNO) %>%
  distinct() %>%
  mutate(value = 1) %>%
  spread(itemNO, value, fill = 0)

itemMatrix <- as(as.matrix(df[, -1]), 'transactions')
库(dplyr)
图书馆(tidyr)
图书馆(阿鲁莱斯)
df%
选择(TID,项目编号)%>%
不同的()%>%
变异(值=1)%>%
排列(项目编号、值、填充=0)

itemMatrix这里有一种方法,我发现它更快。其思想是创建一个0/1值的宽数据帧,然后将其馈送到创建事务中。不需要任何拆分

library(dplyr)
library(tidyr)
library(arules)

df <- df %>%
  select(TID, itemNO) %>%
  distinct() %>%
  mutate(value = 1) %>%
  spread(itemNO, value, fill = 0)

itemMatrix <- as(as.matrix(df[, -1]), 'transactions')
库(dplyr)
图书馆(tidyr)
图书馆(阿鲁莱斯)
df%
选择(TID,项目编号)%>%
不同的()%>%
变异(值=1)%>%
排列(项目编号、值、填充=0)

itemMatrix您提供的示例中的事务包含重复项(例如,最后一行),在原始数据中您必须正确选择唯一事务?您提供的示例中的事务包含重复项(例如,最后一行),在原始数据中,您一定选择了唯一的交易,对吗?这比您完美,大约需要一分钟来完成250万笔交易,这与我之前的经历相比是一个巨大的变化。要感谢您,最好的方法是投票并接受答案。:)这比你做的更好,大约需要一分钟的时间来完成250万笔交易,这与我以前的经历相比是一个巨大的变化。要感谢你,最好的方法是投票决定答案并接受它。:)