Как построить функцию с фреймом данных - PullRequest
0 голосов
/ 13 мая 2019

У меня есть обработка, которую я уже применил к фрейму данных, я хотел поместить всю эту обработку в функцию, чтобы облегчить ее выполнение.Функция выполняет настройку таблицы и ее размера, при выполнении кода здесь отображается ошибка:

Ошибка в dim (table_data) <- n: dims [product 39476] не совпадаютдлина объекта [9] </p>

explore_data=function(table=data.frame(a=factor(),b=factor(),c=factor(),d=factor(),e=factor(),f=factor()),n){
  dim(table_data)=n
  #mettre toutes les requetes en miniscule :
  table=table%>%mutate(a=str_to_lower(table$a))

  #extraire les metiers
  table_metier=table[,c('a','d','f')]

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

  table=filter(table,c!='null')
  table=table%>%mutate(c=as.numeric(as.character(c)))
  table=group_by(table,b)%>%mutate(max_c=max(c))%>%filter(c==max_c)

  #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:
  agreg4=group_by(table,max_c)%>%summarize(nb_c_n=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é
  table_req_rang=agreg4%>%mutate(prob_req_clic=nb_c_n/nb_req)

  #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
  table_data_final=mutate(table_data_final,prop_clic_url=nb_d/nb_a)

  #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=filter(table_data_final,max_c>3,nb_e>3)
  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')]

  return(table_data_final)
}

Я хочу иметь в конце обработанную таблицу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...