рдмрд┐рдХреНрд░реА рдлрд╝рдирд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЗрдВрдЯрд░рдиреЗрдЯ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдИ-рдХреЙрдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдХрджрдо рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЦреЛ рд░рд╣реЗ рд╣реИрдВред
- рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдкрде рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрджрдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд╛рдЬрд╕реНрд╡ рдкреНрд░рд╡рд╛рд╣ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЦрд░реАрджреЗ рдЧрдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░реЗрдВред
- рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░реЗрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдЖрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдлрд╝рдирд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЖрд░ рднрд╛рд╖рд╛ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЗрд╕рдХреА рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо 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
ред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:
- рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд▓реЙрдЧ рдЯреЗрдмрд▓ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рдЬрд╝рд┐рдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдФрд░ ym.s.goalsID рдХреЙрд▓рдо рдлреЙрд░реНрдо рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ -
[0,1,0,...]
, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд░рдгреА рдХреЛ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рд╕реЗ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдгреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред - рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реБрдзрд╛рд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛред рдпрд╛рдиреА рдпрджрд┐ рдПрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рддреАрди рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ, рддреЛ рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдХреЛ рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐, ym.s.goalsID рдХреЙрд▓рдо рдореЗрдВ , рдХреЗрд╡рд▓ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдЧреАред
- рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред
- рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рдирд╛рдо рд╕реНрддрдВрдн рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ:
рд▓реЙрдЧреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрдб # 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')
:

.
- my_funnel .
ggplot
тАФ , , , X moment_type .geom_bar
тАФ тАФ , aes
.scale_fill_manual
тАФ , , .geom_text
тАФ , % .coord_flip
тАФ , .theme
тАФ : , .. .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)
:

?
first_visits
ym.s.lastTrafficSource
firstSource
.left_join
ym.s.clientID . firstSource
.lapply
ad, organic direct. bind_rows
.facet_grid(. ~ firstSource)
, firstSource
.
рдкреБрдирд╢реНрдЪ
. PS , R. R4marketing , R .
:
рдирд┐рд╖реНрдХрд░реНрд╖
, , R :
- .;
- R RStudio;
rym
, funneljoin
ggplot2
;rym
rym_get_logs()
.;funneljoin
.ggplot2
.
, Logs API , : CRM, 1 . , : , -.