I have a treatment that I already applied to a data frame, I wanted to put all this treatment in a function to facilitate its execution. The function takes in setting the table and its size, by executing the code here is the error that was displayed :

Error in dim(table_data) <- n : dims [product 39476] do not match the length of object [9]

  #mettre toutes les requetes en miniscule :

  #extraire les metiers

  #pour chaque id_requete on va garder que l'url avec la position url cliquee maximale:


  #le nombre d'utilisateur different qui ont fait le clic sur l'url
  tab_e=group_by(table,a,d,e)%>% summarise(nb_e=n())

  #regrouper les données 
  table=table[, c('a','d','b','e','f','max_c')]

  #But:calculer de la probabilité du clique sur une url pour une requete 

  #Pour chaque requete on calcule le nombdre de clique sur une réponse  : nb_req
  agreg1=table %>%group_by(a) %>%  summarize(nb_a=n())

  #on calcule pour chaque requete le nombre de fois ou une url est cliquée : nb_clic_url 
  agreg2 =table %>%group_by(a,d,max_c) %>%  summarize(nb_d=n())

  #on calcule la probabilté en divisant les deux: pr_clic = nb_clique_url/nb_requete 
  table_prob_clic_url=merge(agreg1,agreg2,by="a")%>%filter(nb_a!=0) %>% mutate(pr_clic=nb_d/nb_a )

  #but: on va calculer la probabilité qu'une reponse au rang n soit cliquée 

  #nombre de requete avec un clique au rang n:

  #on supprime les id requtes identiques et on compte le nombre de requete 
  nb_req=nrow( distinct(table,b, .keep_all= FALSE))

  #on calcule la probabilité qu'une requete au rang n soit cliqué

  #calculer la différence des probablités
  table_final=merge(table_req_rang,table_prob_clic_url , by="max_c") %>% mutate(diff=abs(pr_clic - prob_req_clic))

  #on ajoute le nombre d'utilisateur
  table_data_final= merge(table_final,tab_e, by=c("a","d"))

  #on ajoute une colonne prop_clic_url = nombre de clique sur url/ nb_req

  #on ajoute les metiers : 
  table_data_final=merge(table_data_final,table_metier ,by=c("a","d"))

  #supprimer les doublons 
  table_data_final=group_by(table_data_final,a,d)%>% distinct(f, .keep_all= TRUE)

  #filtrere les prosition_url_cliqué>3 ,nombre d'utilisateur >3 et #ordonner du plus grand au plus petit
  table_data_final=table_data_final%>% arrange(desc(prop_clic_url,nb_req,max_c))
  table_data_final=table_data_final[, c('a','d','max_c','nb_c_n','nb_req','nb_d','prop_clic_url','nb_e','f','prob_req_clic','pr_clic','diff')]


I want to have at the end a treated table

0 Answers