Правильно конвертировать «data.frame» в «транзакции» для arules - PullRequest
0 голосов
/ 24 июня 2018

У меня есть следующий data.frame:


    > str(noticias_json, list.len = 10)
    'data.frame':   1771 obs. of  3 variables:
     $ bairro:List of 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"
      .. [list output truncated]
     $ crime :List of 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"
      .. [list output truncated]
     $ data  : 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")

, но если я пытаюсь проверить, я получаю следующий вывод


    > inspect(df_trans[1:5])
        items                                 transactionID
    [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, это совершенно другое

<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}

Я не знаю, где я ошибся.Я буду очень признателен, если кто-нибудь сможет мне помочь.Заранее спасибо.

1 Ответ

0 голосов
/ 24 июня 2018

Нам может понадобиться 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")
...