【问题标题】:Correctly convert "data.frame" to "transactions" for arules正确地将“data.frame”转换为“事务”的规则
【发布时间】:2018-06-24 16:43:42
【问题描述】:

我有以下data.frame:

> str(noticias_json, list.len = 10) 'data.frame':1771 obs。 3个变量: $ bairro:1771 列表 ..$ : chr "icarai" ..$ : chr "nacoes" ..$ : chr "danilo passos" "serra verde" ..$ : chr "icarai" ..$ : chr "centro" ..$ : chr "itai" "manoel valinhas" ..$ : chr "anchieta" ..$ : chr "liberdade" ..$ : chr "nossa senhora das gracas" ..$ : chr "liberdade" .. [列表输出被截断] $ 犯罪:1771 人名单 ..$ : chr "trafico de drogas" ..$ : chr "roubo de veiculo" ..$ : chr "roubo" ..$ : chr "trafico de drogas" ..$ : chr "falsidade ideologica" ..$ : chr "trafico de drogas" "porte ilegal de armas" "roubo" ..$ : chr "trafico de drogas" "porte ilegal de armas" ..$ : chr "homicidio" "trafico de drogas" "porte ilegal de armas" "ocultacao de cadaver" ... ..$ : chr "trafico de drogas" "roubo" ..$ : chr "homicidio" "trafico de drogas" "porte ilegal de armas" "estupro" .. [列表输出被截断] $数据:chr "01-02-2016" "31-02-2016" "01-02-2017" "01-02-2017" ...

我需要为包“arules”准备它,以便我可以使用函数 apriori()。我试过了:

df_fact <- as.data.frame(unlist(noticias_json))

然后:

df_trans <- as(df_fact, "transactions")

但如果我尝试检查,我会得到以下输出

> 检查(df_trans[1:5]) 物品交易ID [1] {unlist(noticias_json)=icarai} bairro1 [2] {unlist(noticias_json)=nacoes} bairro2 [3] {unlist(noticias_json)=danilo passos} bairro3 [4] {unlist(noticias_json)=serra verde} bairro4 [5] {unlist(noticias_json)=icarai} bairro5

跟arules的Class Groceries完全不同

<pre>
> inspect(Groceries[1:5])
    items                                                                
[1] {citrus fruit,semi-finished bread,margarine,ready soups}             
[2] {tropical fruit,yogurt,coffee}                                       
[3] {whole milk}                                                         
[4] {pip fruit,yogurt,cream cheese ,meat spreads}                        
[5] {other vegetables,whole milk,condensed milk,long life bakery product}

我不知道我哪里出错了。如果有人可以帮助我,我将不胜感激。 提前致谢。

【问题讨论】:

    标签: r dataframe apriori arules


    【解决方案1】:

    我们可能需要通过“数据”列split 并执行unlist

    df_trans <- as(setNames(lapply(split(noticias_json[-3],
                  noticias_json$data), unlist), NULL), "transactions")
    
    inspect(df_trans)
    #    items                  
    #[1] {icarai,               
    #     trafico de drogas}    
    #[2] {danilo passos,        
    #     porte ilegal de armas,
    #     roubo,                
    #     serra verde,          
    #     trafico de drogas}    
    

    数据

    noticias_json <- structure(list(bairro = structure(list("icarai", 
       c("danilo passos", 
    "serra verde")), class = "AsIs"), crime = structure(list("trafico de drogas", 
        c("trafico de drogas", "porte ilegal de armas", "roubo")), class = "AsIs"), 
        data = c("01-02-2016", "31-02-2016")), .Names = c("bairro", 
    "crime", "data"), row.names = c(NA, -2L), class = "data.frame")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多