Yandex.Metrica рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд░ рднрд╛рд╖рд╛ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдлрд╝рдирд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдмрд┐рдХреНрд░реА рдлрд╝рдирд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЗрдВрдЯрд░рдиреЗрдЯ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдИ-рдХреЙрдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдХрджрдо рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЦреЛ рд░рд╣реЗ рд╣реИрдВред
  • рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдкрде рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрджрдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд╛рдЬрд╕реНрд╡ рдкреНрд░рд╡рд╛рд╣ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЦрд░реАрджреЗ рдЧрдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░реЗрдВред
  • рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░реЗрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдЖрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдлрд╝рдирд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред


рдЖрд░ рднрд╛рд╖рд╛ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЗрд╕рдХреА рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо rym , funneljoin рдФрд░ ggplot2 ред


funneljoin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП rym рд╣рдо рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдлрд╝рдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ggplot2 рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ ggplot2 рд▓рд┐рдП ggplot2 рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдЫрд╡рд┐


рд╕рд╛рдордЧреНрд░реА



рд▓реЙрдЧ рдПрдкреАрдЖрдИ рдпрд╛рдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ


рдХреМрди рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реИ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдпреИрдВрдбреЗрдХреНрд╕ рдорджрдж рд╕реЗ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИред


рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ Yandex.Metrica рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рдЧреИрд░-рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдкреАрдЖрдИ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

R рдореЗрдВ Yandex.Metrica Logs API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо rym рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред



rym - рдЖрд░ рдкреИрдХреЗрдЬ рдЬреЛ рдХрд┐ рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдЖрдкрдХреЛ рдкреНрд░рдмрдВрдзрди API, рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ API, рдЧреЛрд░ API API Google Analytics v3 рдФрд░ рд▓реЙрдЧреНрд╕ API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ ред


Rym рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛


рдЖрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред install.packages() рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд╛рд░ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред library() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдХрд╛рд░реНрдп рд╕рддреНрд░ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


rym рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:


 install.packages("rym") library(rym) 

рд░реЙрдо рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рдпрд╛рдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛


рд╡реНрдпрд╡рд╣рд╛рд░ рдлрд╝рдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рд╡рд┐рдЬрд╝рд┐рдЯ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдпрд╛рдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг


рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред rym рдкреИрдХреЗрдЬ рдореЗрдВ rym рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬрдм рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ rym рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдпреИрдВрдбреЗрдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреБрд╖реНрдЯрд┐ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ "Enter authorize code:" рдХрдВрд╕реЛрд▓ "Enter authorize code:" рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк y рдпрд╛ yes рдЬрд╡рд╛рдм рджреЗрдХрд░ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ "Do you want save API credential in local file ..." ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, API рдкрд░ рдЕрдЧрд▓реА рдХреЙрд▓ рдкрд░, рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрди: рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


Yandex Metrica API рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ


рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ, рд╡рд╣ рдЙрдкрд▓рдмреНрдз рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдпрд╣ rym_get_counters() рдФрд░ rym_get_goals() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 #   library(rym) #    counters <- rym_get_counters(login = " ") #    goals <- rym_get_goals("0000000", #    login = " ") 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, " " рдХреЛ рдЕрдкрдиреЗ Yandex рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ, рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ Yandex рдореАрдЯреНрд░рд┐рдХ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рдЙрдВрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП "0000000" ред рдЖрдк рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрдкрд▓рдмреНрдз рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ - рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд╣реИрдВ:


 # A tibble: 2 x 9 id status owner_login name code_status site permission type gdpr_agreement_accepted <int> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <int> 1 11111111 Active site.ru1 Aerosus CS_NOT_FOUND site.ru edit simple 0 2 00000000 Active site.ru Aerosus RU CS_OK site.ru edit simple 1 

рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рд╕рднреА рдЙрдкрд▓рдмреНрдз рдпреИрдВрдбреЗрдХреНрд╕ рдореАрдЯреНрд░рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддреА рд╣реИред


рд▓рдХреНрд╖реНрдп рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


 # A tibble: 4 x 5 id name type is_retargeting conditions <int> <fct> <fct> <int> <fct> 1 47873638    url 0 type:contain, url:site.ru/checkout/cart/ 2 47873764    url 0 type:contain, url:site.ru/onestepcheckout/ 3 47874133     url 0 type:contain, url:/checkout/onepage/success 4 50646283     action 0 type:exact, url:click_phone 

рдпрд╛рдиреА рдЬрд┐рд╕ рдХрд╛рдЙрдВрдЯрд░ рд╕реЗ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЙрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИрдВ:


  • рдЯреЛрдХрд░реА рдореЗрдВ рдЬрд╛рдУ
  • рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ
  • рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдкреГрд╖реНрда
  • рдлрд╝реЛрди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо tidyverse рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: tidyr , dplyr ред рдЗрд╕рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдпрд╛ рд╕рдВрдкреВрд░реНрдг tidyverse рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред


 # install.packages("tidyverse") # library(tidyverse) install.packages(c("dplyr", "tidyr")) library(dplyr) library(tidyr) 

rym_get_logs() рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ rym_get_logs() рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


 #      logs <- rym_get_logs(counter = "0000000", date.from = "2019-04-01", date.to = "2019-06-30", fields = "ym:s:visitID, ym:s:clientID, ym:s:date, ym:s:goalsID, ym:s:lastTrafficSource, ym:s:isNewUser", login = " ") %>% mutate(ym.s.date = as.Date(ym.s.date), ym.s.clientID = as.character(ym.s.clientID)) 

rym_get_logs() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореБрдЦреНрдп рддрд░реНрдХ rym_get_logs() :


  • рдХрд╛рдЙрдВрдЯрд░ - рдХрд╛рдЙрдВрдЯрд░ рдирдВрдмрд░ рдЬрд┐рд╕рд╕реЗ рдЖрдк рд▓реЙрдЧ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ;
  • date.from - рдкреНрд░рд╛рд░рдВрдн рддрд┐рдерд┐;
  • date.to - рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐;
  • рдлрд╝реАрд▓реНрдб - рдЙрди рдлрд╝реАрд▓реНрдб рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рд╕реЗ рдЖрдк рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ;
  • рд▓реЙрдЧрд┐рди - рдпреИрдВрдбреЗрдХреНрд╕ рд▓реЙрдЧрд┐рди рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд╛рдЙрдВрдЯрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рд▓реЙрдЧреНрд╕ API рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рдХреЙрд▓рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • ym: s: visitID - рд╡рд┐рдЬрд┐рдЯ рдЖрдИрдбреА
  • ym: s: clientID - рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА
  • ym: s: рджрд┐рдирд╛рдВрдХ - рдпрд╛рддреНрд░рд╛ рдХреА рддрд┐рдерд┐
  • ym: s: goalID - рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
  • ym: s: lastTrafficSource - рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реНрд░реЛрдд
  • ym: s: .NewUser - рдкрд╣рд▓реЗ рдЖрдЧрдВрддреБрдХ рдХрд╛ рджреМрд░рд╛

рдЙрдкрд▓рдмреНрдз рдлрд╝реАрд▓реНрдб рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧреНрд╕ API рд╕рд╣рд╛рдпрддрд╛ рджреЗрдЦреЗрдВ ред

рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдлрд╝рдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг - рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред


рдлрд╝рдирд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдлрд╝рдирд▓рдЬреЙрдЗрди рдкреИрдХреЗрдЬ


рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдлрд╝рдирд▓рдЬреЗрди README рдкреИрдХреЗрдЬ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдлрд╝рдирд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП funneljoin рд▓рдХреНрд╖реНрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдЧрдП рдФрд░ рдлрд┐рд░ рдкрдВрдЬреАрдХреГрдд рд╣реБрдП, рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдкрд╣рд▓реА рдпрд╛рддреНрд░рд╛ рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмреАрдЪ рдХрд┐рддрдирд╛ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИред рдпрд╛ рдЖрдкрдХреЛ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рднреАрддрд░ рдЙрддреНрдкрд╛рдж рдХрд╛рд░реНрдб рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдЯреЛрдХрд░реА рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ред funneljoin рдкреИрдХреЗрдЬ рдФрд░ after_join() рдлрд╝рдВрдХреНрд╢рди рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред


рдХреЗ рдмрд╛рдж after_join() :


  • x - рдкрд╣рд▓реЗ рдИрд╡реЗрдВрдЯ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдпреБрдХреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ (рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдХрд░, рджреВрд╕рд░реЗ рдЙрддреНрдкрд╛рдж рдХреЛ рджреЗрдЦрдиреЗ рдкрд░)
  • y - рджреВрд╕рд░реА рдШрдЯрдирд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓рд╛ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ, (рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреВрд╕рд░реЗ рдореЗрдВ, рдЯреЛрдХрд░реА рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рдХрд░)ред
  • by_time - рддрд╛рд▓рд┐рдХрд╛ x рдФрд░ y рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрддрдВрднред
  • by_user - рддрд╛рд▓рд┐рдХрд╛ x рдФрд░ y рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрддрдВрднред
  • рдореЛрдб - рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐: "рдЗрдирд░", "рдлреБрд▓", "рдПрдВрдЯреА", "рд╕реЗрдореА", "рд░рд╛рдЗрдЯ", "рд▓реЗрдлреНрдЯ"ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк after_mode_join (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, after_inner_join рдмрдЬрд╛рдп after_join (..., mode = "inner") рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдкреНрд░рдХрд╛рд░ - рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкреНрд░рдХрд╛рд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ "рдкрд╣рд▓реЗ-рдкрд╣рд▓реЗ", "рдЕрдВрддрд┐рдо-рдкрд╣рд▓реЗ", "рдХрд┐рд╕реА рднреА-рдкрд╣рд▓реЗ"ред "рдлрд╝рдирд▓ рдХреЗ рдкреНрд░рдХрд╛рд░" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
  • max_gap / min_gap (рд╡реИрдХрд▓реНрдкрд┐рдХ) - рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХрддрдо рдФрд░ рдиреНрдпреВрдирддрдо рдЕрд╡рдзрд┐ рддрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВред
  • gap_col (рд╡реИрдХрд▓реНрдкрд┐рдХ) - рдХреНрдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордп рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ .gap рдХреЙрд▓рдо рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ FALSE рд╣реИред

рдлрд╝рдирд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, funneljoin рдкреИрдХреЗрдЬ CRAN рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ funneljoin , рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ GitHub рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред GitHub рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - devtools ред


 install.packages("devtools") devtools::install_github("robinsones/funneljoin") 

рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдбреЗрдЯрд╛


рдлрд╝рдирд▓ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, tidyr рдФрд░ dplyr рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ dplyr ред


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:


  1. рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд▓реЙрдЧ рдЯреЗрдмрд▓ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рдЬрд╝рд┐рдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдФрд░ ym.s.goalsID рдХреЙрд▓рдо рдлреЙрд░реНрдо рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ - [0,1,0,...] , рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд░рдгреА рдХреЛ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рд╕реЗ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдгреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
  2. рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реБрдзрд╛рд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛред рдпрд╛рдиреА рдпрджрд┐ рдПрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рддреАрди рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ, рддреЛ рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдХреЛ рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐, ym.s.goalsID рдХреЙрд▓рдо рдореЗрдВ , рдХреЗрд╡рд▓ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдЧреАред
  3. рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред
  4. рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рдирд╛рдо рд╕реНрддрдВрдн рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ:


рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрдб
 #      logs_goals <- logs %>% mutate(ym.s.goalsID = str_replace_all(ym.s.goalsID, #     "\\[|\\]", "") %>% str_split(",")) %>% #     unnest(cols = c(ym.s.goalsID)) %>% mutate(ym.s.goalsID = as.integer(ym.s.goalsID)) %>% #  id     left_join(goals, by = c("ym.s.goalsID" = "id")) %>% #      rename(events = name) #     events 

рдХреЛрдб рдХреА рдПрдХ рдЫреЛрдЯреА рд╡реНрдпрд╛рдЦреНрдпрд╛ред %>% рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдиреНрд╡реЗрдпрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реБрдкрд░рдлреБрд▓ рдЪрд░ рдХреЗ рд╕рд╛рде рд░реИрдо рдХреЛ рд░реЛрдХрдирд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред


str_replace_all рдлрд╝рдВрдХреНрд╢рди ym.s.goalsID рдХреЙрд▓рдо рдореЗрдВ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рд╣рдЯрд╛рддрд╛ рд╣реИред str_split ym.s.goalsID рдХреЙрд▓рдо рд╕реЗ рд▓рдХреНрд╖реНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ unnest рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рд╕рднреА рд╕реНрддрдВрднреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ unnest , рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред


mutate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП mutate рд╣рдо рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдбрд╛рд▓рддреЗ рд╣реИрдВред


left_join рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЧреЛрд▓ рддрд╛рд▓рд┐рдХрд╛ left_join , рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ ym.s.goalsID рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдФрд░ рдХреБрдВрдЬреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдВрдЬреА рд╕реНрддрдВрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдИрдбреА рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рдЕрдВрдд рдореЗрдВ, rename рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдирд╛рдо рд╕реНрддрдВрдн рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрддрд╛ рд╣реИред


рдЕрдм log_goals рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрд╕реНрдерд┐рддрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдЕрдЧрд▓рд╛, рддреАрди рдирдИ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдБ:


  • first_visits - рд╕рднреА рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕рддреНрд░ рдХреА рддрд╛рд░реАрдЦреЗрдВ
  • рдХрд╛рд░реНрдЯ - рдЯреЛрдХрд░реА рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рддрд╛рд░реАрдЦреЗрдВ
  • рдЖрджреЗрд╢ - рдЖрджреЗрд╢

рддрд╛рд▓рд┐рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЛрдб
 #      first_visits <- logs_goals %>% filter(ym.s.isNewUser == 1 ) %>% #     select(ym.s.clientID, #   clientID ym.s.date) #   date #       cart <- logs_goals %>% filter(events == "  ") %>% select(ym.s.clientID, ym.s.date) #   orders <- logs_goals %>% filter(events == "   ") %>% select(ym.s.clientID, ym.s.date) 

рдкреНрд░рддреНрдпреЗрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдореБрдЦреНрдп рд▓реЙрдЧ_рдЧреЛрд▓реНрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ filter рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдлрд╝рдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдФрд░ рдШрдЯрдирд╛ рдХреА рддрд╛рд░реАрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЫреЛрдбрд╝рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬреЛ рдХрд┐ ym.s.clientID рдФрд░ ym.s.date рдХреЙрд▓рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдирдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВред рдЗрдЪреНрдЫрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдХреЙрд▓рдо рдЪреБрдиреЗ рдЧрдП рдереЗред


рдлрд╝рдирд▓ рдкреНрд░рдХрд╛рд░


рдкреНрд░рдХрд╛рд░ рддрд░реНрдХ first , last , any рдФрд░ lastbefore рдХреЗ first , last , any рдФрд░ first рдХреЗ рдмрд╛рдж рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрдпреЛрдЬрди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


  • first-first : рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж x рдФрд░ y рдЗрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реА рдпрд╛рддреНрд░рд╛ рдХреА рддрд╛рд░реАрдЦ, рдФрд░ рдкрд╣рд▓реА рдЦрд░реАрдж рдХреА рддрд╛рд░реАрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ first-first рдлрд╝рдирд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

 #    first-first first_visits %>% after_inner_join(orders, by_user = "ym.s.clientID", by_time = "ym.s.date", type = "first-first") 

 # A tibble: 42 x 3 ym.s.clientID ym.s.date.x ym.s.date.y <chr> <date> <date> 1 1552251706539589249 2019-04-18 2019-05-15 2 1554193975665391000 2019-04-02 2019-04-15 3 1554317571426012455 2019-04-03 2019-04-04 4 15544716161033564779 2019-04-05 2019-04-08 5 1554648729526295287 2019-04-07 2019-04-11 6 1554722099539384487 2019-04-08 2019-04-17 7 1554723388680198551 2019-04-08 2019-04-08 8 15547828551024398507 2019-04-09 2019-05-13 9 1554866701619747784 2019-04-10 2019-04-10 10 1554914125524519624 2019-04-10 2019-04-10 # ... with 32 more rows 

рд╣рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ 1 рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдкрд╣рд▓реА рдпрд╛рддреНрд░рд╛ рдХреА рддрд╛рд░реАрдЦ рдФрд░ рдЙрд╕рдХреЗ рдкрд╣рд▓реЗ рдЖрджреЗрд╢ рдХреА рддрд╛рд░реАрдЦ рдХрд╛ рдбреЗрдЯрд╛ рд╣реИред


  • first-firstafter : рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ x рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдлрд┐рд░ рдкрд╣рд▓рд╛ y рдкрд╣рд▓реЗ x рдХреЗ рдмрд╛рдж рд╣реБрдЖред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдмрд╛рд░-рдмрд╛рд░ рджреМрд░рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рджреМрд░рд╛рди рдЙрд╕рдиреЗ рдЯреЛрдХрд░реА рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛, рдпрджрд┐ рдЖрдкрдХреЛ рдЯреЛрдХрд░реА рдореЗрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЙрддреНрдкрд╛рдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рддрд┐рдерд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдирд┐рдХрдЯрддрдо рдСрд░реНрдбрд░ рдХреА рддрд╛рд░реАрдЦ, рдлрд╝рдирд▓ first-firstafter рдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ first-firstafter ред

 cart %>% after_inner_join(orders, by_user = "ym.s.clientID", by_time = "ym.s.date", type = "first-firstafter") 

 # A tibble: 49 x 3 ym.s.clientID ym.s.date.x ym.s.date.y <chr> <date> <date> 1 1551433754595068897 2019-04-02 2019-04-05 2 1552251706539589249 2019-05-15 2019-05-15 3 1552997205196001429 2019-05-23 2019-05-23 4 1553261825377658768 2019-04-11 2019-04-11 5 1553541720631103579 2019-04-04 2019-04-05 6 1553761108775329787 2019-04-16 2019-04-16 7 1553828761648236553 2019-04-03 2019-04-03 8 1554193975665391000 2019-04-13 2019-04-15 9 1554317571426012455 2019-04-04 2019-04-04 10 15544716161033564779 2019-04-08 2019-04-08 # ... with 39 more rows 

  • lastbefore-firstafter : first x рдЙрд╕рдХреЗ рдмрд╛рдж y рдЕрдЧрд▓реЗ y рд╕реЗ рдкрд╣рд▓реЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдмрд╛рд░-рдмрд╛рд░ рдЖрдпрд╛ рд╣реИ, рдХреБрдЫ рд╕рддреНрд░ рдЦрд░реАрдж рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдПред рдпрджрд┐ рдЖрдкрдХреЛ рдЦрд░реАрджрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо рд╕рддреНрд░ рдХреА рддрд╛рд░реАрдЦ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЦрд░реАрдж рдХреА рддрд╛рд░реАрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдирд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

 first_visits %>% after_inner_join(orders, by_user = "ym.s.clientID", by_time = "ym.s.date", type = "lastbefore-firstafter") 

 # A tibble: 50 x 3 ym.s.clientID ym.s.date.x ym.s.date.y <chr> <date> <date> 1 1551433754595068897 2019-04-05 2019-04-05 2 1552251706539589249 2019-05-15 2019-05-15 3 1552251706539589249 2019-05-16 2019-05-16 4 1552997205196001429 2019-05-23 2019-05-23 5 1553261825377658768 2019-04-11 2019-04-11 6 1553541720631103579 2019-04-05 2019-04-05 7 1553761108775329787 2019-04-16 2019-04-16 8 1553828761648236553 2019-04-03 2019-04-03 9 1554193975665391000 2019-04-15 2019-04-15 10 1554317571426012455 2019-04-04 2019-04-04 # ... with 40 more rows 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓реА рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╣ рджрд┐рдирд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрджреЗрд╢ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рдХреЛ рдЯреЛрдХрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЖрджреЗрд╢ рдХреА рддрд┐рдерд┐ рднреАред


  • any-firstafter рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рдж: рд╕рднреА x рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдкрд╣рд▓рд╛ y рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдмрд╛рд░-рдмрд╛рд░ рдЖрдпрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рдЙрд╕рдиреЗ рдЯреЛрдХрд░реА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рднреА рдЬреЛрдбрд╝реЗ рдЧрдП рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдСрд░реНрдбрд░ рдХрд┐рдПред рдпрджрд┐ рдЖрдкрдХреЛ рдЯреЛрдХрд░реА рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрдзрди рдХреА рддрд╛рд░реАрдЦреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреА рддрд╛рд░реАрдЦреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдирд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ any-firstafter ред

 cart %>% after_inner_join(orders, by_user = "ym.s.clientID", by_time = "ym.s.date", type = "any-firstafter") 

 # A tibble: 239 x 3 ym.s.clientID ym.s.date.x ym.s.date.y <chr> <date> <date> 1 1551433754595068897 2019-04-02 2019-04-05 2 1551433754595068897 2019-04-02 2019-04-05 3 1551433754595068897 2019-04-03 2019-04-05 4 1551433754595068897 2019-04-03 2019-04-05 5 1551433754595068897 2019-04-03 2019-04-05 6 1551433754595068897 2019-04-05 2019-04-05 7 1551433754595068897 2019-04-05 2019-04-05 8 1551433754595068897 2019-04-05 2019-04-05 9 1551433754595068897 2019-04-05 2019-04-05 10 1551433754595068897 2019-04-05 2019-04-05 # ... with 229 more rows 

  • рдХреЛрдИ рднреА-рдХреЛрдИ: рд╕рднреА x рдФрд░ рд╕рднреА y рдХреЛ рдкреНрд░рддреНрдпреЗрдХ x рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд▓рд╛рдПрдБ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдмрд╛рдж рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреА рд╕рднреА рдпрд╛рддреНрд░рд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

 first_visits %>% after_inner_join(orders, by_user = "ym.s.clientID", by_time = "ym.s.date", type = "any-any") 

 # A tibble: 122 x 3 ym.s.clientID ym.s.date.x ym.s.date.y <chr> <date> <date> 1 1552251706539589249 2019-04-18 2019-05-15 2 1552251706539589249 2019-04-18 2019-05-15 3 1552251706539589249 2019-04-18 2019-05-15 4 1552251706539589249 2019-04-18 2019-05-16 5 1554193975665391000 2019-04-02 2019-04-15 6 1554193975665391000 2019-04-02 2019-04-25 7 1554317571426012455 2019-04-03 2019-04-04 8 15544716161033564779 2019-04-05 2019-04-08 9 1554648729526295287 2019-04-07 2019-04-11 10 1554722099539384487 2019-04-08 2019-04-17 # ... with 112 more rows 

рдлрд╝рдирд▓ рдЪрд░рдг


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг after_inner_join() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рднреА рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ first_visits , рдХрд╛рд░реНрдЯ рдФрд░ рдСрд░реНрдбрд░ рдЯреЗрдмрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред


рд▓реЗрдХрд┐рди рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП funnel_start() рдФрд░ funnel_step() рдлрд╝рдВрдХреНрд╢рди рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред funnel_start рдлрд╝рдирд▓ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рдБрдЪ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ:


  • tbl - рдШрдЯрдирд╛ рддрд╛рд▓рд┐рдХрд╛;
  • moment_type - рдлрд╝рдирд▓ рдореЗрдВ рдкрд╣рд▓реА рдШрдЯрдирд╛;
  • рдкрд▓ - рд╕реНрддрдВрдн рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛ рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ;
  • tstamp - рдЙрд╕ рдШрдЯрдирд╛ рдХреЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рджрд┐рдирд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕реНрддрдВрдн рдХрд╛ рдирд╛рдо;
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдХрд╛ рдирд╛рдоред

 logs_goals %>% select(events, ym.s.clientID, ym.s.date) %>% funnel_start(moment_type = "   ", moment = "events", tstamp = "ym.s.date", user = "ym.s.clientID") 

 # A tibble: 52 x 2 ym.s.clientID `ym.s.date_   ` <chr> <date> 1 1556018960123772801 2019-04-24 2 1561216372134023321 2019-06-22 3 1556955573636389438 2019-05-04 4 1559220890220134879 2019-05-30 5 1553261825377658768 2019-04-11 6 1561823182372545402 2019-06-29 7 1556047887455246275 2019-04-23 8 1554722099539384487 2019-04-17 9 1555420652241964245 2019-04-17 10 1553541720631103579 2019-04-05 # ... with 42 more rows 

funnel_start ym.s.clientI рдФрд░ ym.s.date_ рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рджреЗрддрд╛ рд╣реИ ym.s.date_ (рджрд┐рдирд╛рдВрдХ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо, _ рдФрд░ рдШрдЯрдирд╛ рдХрд╛ рдирд╛рдо)ред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреЛ funnel_step() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред funnel_start рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реНрддрдВрднреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рджрд┐рдП рд╣реИрдВ, рдЕрдм рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдИрд╡реЗрдВрдЯ рдХреНрд╖рдгрд┐рдХрд╛ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдирд▓ рдореЗрдВ рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╣реЛрдЧрд╛, рдФрд░ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдк рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "first-first" , "first-any" )ред


 logs_goals %>% select(events, ym.s.clientID, ym.s.date) %>% funnel_start(moment_type = "  ", moment = "events", tstamp = "ym.s.date", user = "ym.s.clientID") %>% funnel_step(moment_type = "   ", type = "first-last") 

 # A tibble: 319 x 3 ym.s.clientID `ym.s.date_  ` `ym.s.date_   ` <chr> <date> <date> 1 1550828847886891355 2019-04-01 NA 2 1551901759770098825 2019-04-01 NA 3 1553595703262002507 2019-04-01 NA 4 1553856088331234886 2019-04-01 NA 5 1554044683888242311 2019-04-01 NA 6 1554095525459102609 2019-04-01 NA 7 1554100987632346537 2019-04-01 NA 8 1551433754595068897 2019-04-02 2019-04-05 9 1553627918798485452 2019-04-02 NA 10 155418104743178061 2019-04-02 NA # ... with 309 more rows 

funnel_step рд╕рд╛рде funnel_step рдЖрдк рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХреЗ рд╕рд╛рде рдлрд╝рдирд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдлрд╝рдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдлрд╝рдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб
 #         #     events - " " logs_goals <- logs_goals %>% filter(ym.s.isNewUser == 1 ) %>% mutate(events = " ") %>% bind_rows(logs_goals) #     logs_goals %>% select(events, ym.s.clientID, ym.s.date) %>% funnel_start(moment_type = " ", moment = "events", tstamp = "ym.s.date", user = "ym.s.clientID") %>% funnel_step(moment_type = "  ", type = "first-last") %>% funnel_step(moment_type = "  ", type = "first-last") %>% funnel_step(moment_type = "   ", type = "first-last") 

рдФрд░ рдЕрдм рдХреЗрдХ рдкрд░ рдЪреЗрд░реА summarize_funnel() ред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рд╕реЗ рдЕрдЧрд▓реЗ рддрдХ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдЬреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рд╕реЗ рдЧреБрдЬрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдореЗрдВред


 my_funnel <- logs_goals %>% select(events, ym.s.clientID, ym.s.date) %>% funnel_start(moment_type = " ", moment = "events", tstamp = "ym.s.date", user = "ym.s.clientID") %>% funnel_steps(moment_type = c("  ", "  ", "   "), type = "first-last") %>% summarize_funnel() 

 # A tibble: 4 x 4 moment_type nb_step pct_cumulative pct_step <fct> <dbl> <dbl> <dbl> 1   18637 1 NA 2    1589 0.0853 0.0853 3    689 0.0494 0.579 4     34 0.0370 0.749 

nb_step тАФ , , pct_cumulative тАФ , pct_step тАФ .



my_funnel , ggplot2 .


ggplot2 тАФ R, . , , .


ggplot2 , 2005 . , photoshop, , .



 # install.packages("ggplot2") library(ggplot2) my_funnel %>% mutate(padding = (sum(my_funnel$nb_step) - nb_step) / 2) %>% gather(key = "variable", value = "val", -moment_type) %>% filter(variable %in% c("nb_step", "padding")) %>% arrange(desc(variable)) %>% mutate(moment_type = factor(moment_type, levels = c("   ", "  ", "  ", " "))) %>% ggplot( aes(x = moment_type) ) + geom_bar(aes(y = val, fill = variable), stat='identity', position='stack') + scale_fill_manual(values = c('coral', NA) ) + geom_text(data = my_funnel, aes(y = sum(my_funnel$nb_step) / 2, label = paste(round(round(pct_cumulative * 100,2)), '%')), colour='tomato4', fontface = "bold") + coord_flip() + theme(legend.position = 'none') + labs(x='moment', y='volume') 

:


рдлрд╝рдирд▓ рджреГрд╢реНрдп


.


  1. my_funnel .
  2. ggplot тАФ , , , X moment_type .
  3. geom_bar тАФ тАФ , aes .
  4. scale_fill_manual тАФ , , .
  5. geom_text тАФ , % .
  6. coord_flip тАФ , .
  7. theme тАФ : , .. .
  8. labs тАФ .


, , , , .


lapply , R. , , bind_rows .


 #        first_visits <- rename(first_visits, firstSource = ym.s.lastTrafficSource) #          logs_goals <- select(first_visits, ym.s.clientID, firstSource) %>% left_join(logs_goals, ., by = "ym.s.clientID") #     my_multi_funnel <- lapply(c("ad", "organic", "direct"), function(source) { logs_goals %>% filter(firstSource == source) %>% select(events, ym.s.clientID, ym.s.date) %>% funnel_start(moment_type = " ", moment = "events", tstamp = "ym.s.date", user = "ym.s.clientID") %>% funnel_steps(moment_type = c("  ", "  ", "   "), type = "first-last") %>% summarize_funnel() %>% mutate(firstSource = source) }) %>% bind_rows() #   

 # A tibble: 12 x 5 moment_type nb_step pct_cumulative pct_step firstSource <fct> <int> <dbl> <dbl> <chr> 1   14392 1 NA ad 2    154 0.0107 0.0107 ad 3    63 0.00438 0.409 ad 4     14 0.000973 0.222 ad 5   3372 1 NA organic 6    68 0.0202 0.0202 organic 7    37 0.0110 0.544 organic 8     13 0.00386 0.351 organic 9   607 1 NA direct 10    49 0.0807 0.0807 direct 11    21 0.0346 0.429 direct 12     8 0.0132 0.381 direct 

my_multi_funnel , .


 #    my_multi_funnel %>% mutate(padding = ( 1 - pct_cumulative) / 2 ) %>% gather(key = "variable", value = "val", -moment_type, -firstSource) %>% filter(variable %in% c("pct_cumulative", "padding")) %>% arrange(desc(variable)) %>% mutate(moment_type = factor(moment_type, levels = c("   ", "  ", "  ", " ")), variable = factor(variable, levels = c("pct_cumulative", "padding"))) %>% ggplot( aes(x = moment_type) ) + geom_bar(aes(y = val, fill = variable), stat='identity', position='stack') + scale_fill_manual(values = c('coral', NA) ) + geom_text(data = my_multi_funnel_df, aes(y = 1 / 2, label =paste(round(round(pct_cumulative * 100, 2)), '%')), colour='tomato4', fontface = "bold") + coord_flip() + theme(legend.position = 'none') + labs(x='moment', y='volume') + facet_grid(. ~ firstSource) 

:
рдЪреИрдирд▓ рдХреАрдк


?


  1. first_visits ym.s.lastTrafficSource firstSource .
  2. left_join ym.s.clientID . firstSource .
  3. lapply ad, organic direct. bind_rows .
  4. facet_grid(. ~ firstSource) , firstSource .

рдкреБрдирд╢реНрдЪ


. PS , R. R4marketing , R .


:


  • ;
  • ;
  • ;
  • R.

рдирд┐рд╖реНрдХрд░реНрд╖


, , R :


  1. .;
  2. R RStudio;
  3. rym , funneljoin ggplot2 ;
  4. rym rym_get_logs() .;
  5. funneljoin .
  6. ggplot2 .

, Logs API , : CRM, 1 . , : , -.

Source: https://habr.com/ru/post/hi462279/


All Articles