捕获篮子中的所有物品(R / arulesSequences)

时间:2017-05-22 21:05:55

标签: r sequences arules

我遇到了R中arulesSequences包的问题。我能够将baskets读入程序,并创建一个data.frame,但是它无法识别第一列之外的任何其他项。以下是我的数据集示例,该示例遵循此处演示的表单:Data Mining Algorithms in R/Sequence Mining/SPADE

    [sequenceID] [eventID] [SIZE] items
    2 1 1 OB/Gyn
    15 1 1 Internal_Medicine
    15 2 1 Internal_Medicine
    15 3 1 Internal_Medicine
    56 1 2 Internal_Medicine Neurology
    84 1 1 Oncology
    151 1 2 Hematology Hematology
    151 2 1 Hematology/Oncology
    151 3 1 Hematology/Oncology
    185 1 2 Gastroenterology Gastroenterology

数据集从SAS导出为[.CSV],然后在Excel中转​​换为制表符分隔的[.TXT]文件。删除标题以导入R,但为了清楚起见,我将它们放在上面的括号中。所有空格都用下划线(“_”)替换,项目名称尽可能简化。每个项目都列在一个单独的列中。以下命令用于导入文件:

    baskets <- read_baskets(con = "...filepath/spade.txt", sep = "[ \t]+",info=c("sequenceID", "eventID", "SIZE"))

我没有错误,所以我继续使用以下命令:

    as(baskets, "data.frame")

此处,它会根据请求返回data.frame,但是它无法捕获第一列之外的项目:

    items sequenceID eventID SIZE
    {OB/Gyn} 2 1 1
    {Internal_Medicine} 15 1 1
    {Internal_Medicine} 15 2 1
    {Internal_Medicine} 15 3 1
    {Internal_Medicine} 56 1 2
    {Oncology} 84 1 1
    {Hematology} 151 1 2
    {Hematology/Oncology} 151 2 1
    {Hematology/Oncology} 151 3 1
    {Gastroenterology} 185 1 2

第5行应如下所示:

    {Internal_Medicine, Neurology} 56 1 2

我已经尝试将文件直接导入为[.CSV],但data.frame的格式与我上面尝试使用制表符的格式类似,不同之处在于它在第一个项目前放置逗号:

    {,Internal_Medicine} 56 1 2

非常感谢任何疑难解答建议。在格式化方面,似乎这个软件包很挑剔。

1 个答案:

答案 0 :(得分:0)

  

第5行应如下所示:

{Internal_Medicine, Neurology} 56 1 2

结帐

library(arulesSequences)
packageVersion("arulesSequences")
# [1] ‘0.2.16’
packageVersion("arules")
# [1] ‘1.5.0’
txt <- readLines(n=10)
2 1 1 OB/Gyn
15 1 1 Internal_Medicine
15 2 1 Internal_Medicine
15 3 1 Internal_Medicine
56 1 2 Internal_Medicine Neurology
84 1 1 Oncology
151 1 2 Hematology Hematology
151 2 1 Hematology/Oncology
151 3 1 Hematology/Oncology
185 1 2 Gastroenterology Gastroenterology
writeLines(txt, tf<-tempfile())
baskets <- read_baskets(con = tf, sep = "[ \t]+",info=c("sequenceID", "eventID", "SIZE"))
as(baskets, "data.frame")
#                            items sequenceID eventID SIZE
# 1                       {OB/Gyn}          2       1    1
# 2            {Internal_Medicine}         15       1    1
# 3            {Internal_Medicine}         15       2    1
# 4            {Internal_Medicine}         15       3    1
# 5  {Internal_Medicine,Neurology}         56       1    2 # <----------
# 6                     {Oncology}         84       1    1
# 7                   {Hematology}        151       1    2
# 8          {Hematology/Oncology}        151       2    1
# 9          {Hematology/Oncology}        151       3    1
# 10            {Gastroenterology}        185       1    2