R рдореЗрдВ рдПрдирд┐рдореЗрдЯреЗрдб рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ NBA рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрдд рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рджреГрд╢реНрдп

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


рдореИрдВ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдХреНрдпрд╛ рд▓рд┐рдЦреВрдВрдЧрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА simpsons рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдЦ рдореЗрдВ рд╣реЗрдмрд░ рдкрд░ рдерд╛ред рд╣рдо R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирд┐рдореЗрдЯреЗрдб рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ, рдмрджрд▓реЗ рдореЗрдВ, рд▓реЗрдЦ рдХрд╛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╣реИ, рдЯреНрд░реЗрдВрдбрд┐рдВрдЧ рдПрдирд┐рдореЗрдЯреЗрдб рдмрд╛рд░ рдЪрд╛рд░реНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд░ рд╕реЗ рдордзреНрдпрдо рд╕реЗ рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦреЛрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрди рдХреНрд╖рдгреЛрдВ рдХрд╛ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрддрдВрднреЛрдВ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдирдмреАрдП рдХрдорд╛рдВрдб рдХреЗ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рди рдХрд┐ рдорд╛рдирдХ ggplot2 рдкреИрд▓реЗрдЯ рдХрд╛, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдбреЗрдЯрд╛ред data.table рдкреИрдХреЗрдЬ, dplyr рдирд╣реАрдВред рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдХрд╛рд░реНрдп рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдЯреАрдо рдХрд╛ рдирд╛рдо рдФрд░ рдЙрди рд╡рд░реНрд╖реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреАрдд рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдбреЗрдЯрд╛


рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ 15 рд╕рддреНрд░реЛрдВ рдореЗрдВ 30 рдПрдирдмреАрдП рдЯреАрдореЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЬреАрдд рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЗрдВ NBA рдбреЗрдЯрд╛ рд░рд┐рдЯреНрд░реАрд╡рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдБрдХрдбрд╝реЗ . nba.com рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдПрдирдмреАрдП рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрд╡рд╢реНрдпрдХ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ Github рдкрд░ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рд╣реИред


рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛


 library(data.table) library(tidyverse) library(gganimate) 

рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдореИрдВ data.table (рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЗрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдорд┐рд▓рд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ data.table рд╣реВрдВред рдореИрдВ tidyverse рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рд╕реЗрдЯ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ tidyverse , рдФрд░ рдПрдХ рдЕрд▓рдЧ ggplot2 рдирд╣реАрдВ, рддрд╛рдХрд┐ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдпрджрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рд╕реЗрдЯ рд╕реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, ggplot2 рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕реЗрдЯ рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЦреИрд░, gganimate рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдЧрддрд┐ рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред


рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдХреЗ 79 рдХреЙрд▓рдо рдореЗрдВ рд╕реЗ 2 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓рдо рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдХреБрдЫ рдорд╛рди рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЧрдпрд╛ред


data.table рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ dt[i, j, by] , рдЬрд╣рд╛рдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдореВрд╣рди рдХреЗ рд▓рд┐рдП "рдЬрд┐рдореНрдореЗрджрд╛рд░" рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЯреАрдордирд╛рдо рдХреЙрд▓рдо рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдФрд░ рдПрдХ рд░реЛрдбрд╝рд╛ рд╣реИред рдпрд╣ рдХреЙрд▓рдо рдЯреАрдореЛрдВ рдХреЗ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рд▓реЗрдХрд░реНрд╕, рдХреЗрд▓реНрдЯрд┐рдХреНрд╕, рд╣реАрдЯ, рдЖрджрд┐ред рд▓реЗрдХрд┐рди рд╕рдореАрдХреНрд╖рд╛рдзреАрди рдЕрд╡рдзрд┐ (2004/05 рд╕реАрдЬрд╝рди рд╕реЗ) рдХреЗ рджреМрд░рд╛рди рдХрдИ рдЯреАрдореЛрдВ рдиреЗ рдЕрдкрдирд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛: рдиреНрдпреВ рдСрд░рд▓рд┐рдпрдиреНрд╕ рд╣реЙрд░реНрдиреЗрдЯреНрд╕ рдиреНрдпреВ рдСрд░рд▓рд┐рдпрдиреНрд╕ рдкреЗрд▓рд┐рдХрди рдмрди рдЧрдП, рд╢рд╛рд░реНрд▓реЗрдЯ рдмреЛрдмреЗрдЯреНрд╕ рдиреЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдирд╛рдо рд╢рд╛рд░реНрд▓реЛрдЯ рд╣реЙрд░реНрдиреЗрдЯреНрд╕, рдФрд░ рд╕рд┐рдПрдЯрд▓ рд╕реБрдкрд░рд╕реЙрдирд┐рдХреНрд╕ рдУрдХреНрд▓рд╛рд╣реЛрдорд╛ рд╕рд┐рдЯреА рдердВрдбрд░ рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рднреНрд░рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ:


 table1 <- table[TeamCity == "New Orleans" & TeamName == "Hornets", TeamName := "Pelicans"][ TeamCity == "New Orleans/Oklahoma City" & TeamName == "Hornets", TeamName := "Pelicans"][ TeamName == "Bobcats", TeamName := "Hornets"][ TeamName == "SuperSonics", TeamName := "Thunder"] 

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


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЙрди рдХреЙрд▓рдореЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 table1 <- table1[ , .(TeamName, WINS)] 

data.table рдореЗрдВред () рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди list рдлрдВрдХреНрд╢рди рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдХреЙрд▓рдо рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ "рдХреНрд▓рд╛рд╕рд┐рдХ" рд╡рд┐рдХрд▓реНрдк table1 <- table1[, c("TeamName", "WINS")] ред рдЙрд╕рдХреЗ рдмрд╛рдж, рддрд╛рд▓рд┐рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд▓реЗрддреА рд╣реИ:


TeamNameWINS
рд╕рдВрд╕62
рдЧрд░реНрдореА59
рд╕реНрдкрд░реНрд╕59
рдкрд┐рд╕реНрдЯрди54

рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдЬрд╝рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЪрдпрдирд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЬреАрдд рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреАрдд рдХреА рдХреБрд▓ рд╕рдВрдЪрдпреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


table1 <- table1[, CumWins := cumsum(WINS), by = "TeamName"]


cumsum рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ cumsum рд╣рдореЗрдВ рдЙрди рдирдВрдмрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: = рдХреЗ рдмрдЬрд╛рдп = рдЖрдкрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ; рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╣реА рдХреНрдпреВрд╡рд┐рдВрд╕ рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред by = "TeamName" рд╕рдореВрд╣ рдХреЛ рдЯреАрдо рдХреЗ рдирд╛рдо рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рд╕рдВрдЪрдпреА рд░рд╛рд╢рд┐ рдХреА by = "TeamName" 30 рдЯреАрдореЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреА рдЬрд╛рддреА рд╣реИред


рдЕрдЧрд▓рд╛, рдореИрдВ рдЙрд╕ рд╡рд░реНрд╖ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдЬрд╝рди рд╢реБрд░реВ рд╣реБрдЖ рдерд╛ред рдПрдирдмреАрдП рдХрд╛ рдореМрд╕рдо рдЕрдХреНрдЯреВрдмрд░ рд╕реЗ рдордИ рддрдХ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЛ рдХреИрд▓реЗрдВрдбрд░ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╕реАрдЬрд╝рди рдХреЗ рдкрджрдирд╛рдо рдореЗрдВ, рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╡рд░реНрд╖, рдЕрд░реНрдерд╛рддреНред рд╕реАрдЬрди: рдЪрд╛рд░реНрдЯ рдкрд░ 2018 рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ 2018/19 рд╕реАрдЬрд╝рди рд╣реИред


рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдпрд╣ рдбреЗрдЯрд╛ рд╣реИред рд╕реАрдЬрд╝рдирдЖрдИрдбреА рдХреЙрд▓рдо 2 (рд╡рд░реНрд╖ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрдВрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 22004. рдЖрдк stringr рдкреИрдХреЗрдЬ рдпрд╛ рдореВрд▓ рдЖрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдХреЛ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдЧрдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рдЗрд╕ рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рдореМрд╕рдореЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рд╣рдЯрд╛рдПрдВ рдФрд░ рджреЛрдмрд╛рд░рд╛ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрд▓рдо рдмрдирд╛рдПрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрд░рд╡рд╛рдИред


рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛:


table1 <- table1[,year := rep(seq(2004, 2018), each = length(unique(table1$TeamName)))]


рдореИрдВ "рднрд╛рдЧреНрдпрд╢рд╛рд▓реА" рдерд╛ рдХрд┐ рдЪрдпрдирд┐рдд рд╕рдордп рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдирдмреАрдП рдореЗрдВ рдЯреАрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл 2004 рд╕реЗ 2018 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ 30 рдмрд╛рд░ рджреЛрд╣рд░рд╛рдИред рдлрд┐рд░ рд╕реЗ, рдпрджрд┐ рдЖрдк рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧреА рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдЬрд╝рди рдореЗрдВ рдЯреАрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рд╕реАрдЬрд╝рдирдЖрдИрдбреА рдХреЙрд▓рдо рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред


рдлрд┐рд░ рдХреНрдпреВрдорд░реНрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВред


table1 <- table1[, cumrank := frank(-CumWins, ties.method = "random"), by = "year"]


рдпрд╣ рдЬреАрдд рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдЬрд╝рди рдореЗрдВ рдЯреАрдореЛрдВ рдХреА рд░реИрдВрдХрд┐рдВрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред frank рдмреЗрд╕ rank frank рдПрдХ рддреЗрдЬрд╝ data.table рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдорд╛рдЗрдирд╕ рдХрд╛ рдорддрд▓рдм рд╣реИ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд░реИрдВрдХрд┐рдВрдЧ (рдпрд╣ decreasing = TRUE рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреАрддрдиреЗ рд╡рд╛рд▓реА рдЯреАрдореЛрдВ рдХреЛ рдХреНрдпрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП ties.method = "random" ред рдареАрдХ рд╣реИ, рдпрд╣ рд╕рдм рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рд╕рдореВрд╣реАрдХреГрдд рд╣реИред


рдФрд░ рдЕрдВрддрд┐рдо рддрд╛рд▓рд┐рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг value_rel рдХреЙрд▓рдо рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред


table1 <- table1[, value_rel := CumWins/CumWins[cumrank==1], by = "year"]


рдпрд╣ рдХреЙрд▓рдо рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдХреА рдЬреАрдд рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЛ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪрддрдо рд╕рдВрдХреЗрддрдХ рдорд╛рдирддрд╛ рд╣реИред рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЯреАрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдВрдХреЗрддрдХ 1 рд╣реИ, рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрдо рд╣реИ, рдЬреЛ рдореМрд╕рдо рдХреА рд╕рдлрд▓рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред


рд╕рднреА рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рдмрд╛рдж, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд╣реИрдВ:


TeamNameWINSCumWinsрд╕рд╛рд▓cumrankvalue_rel
рд╕реНрдкрд░реНрд╕5959200430.9516129
рд╕реНрдкрд░реНрд╕63122200511.0000000
рд╕реНрдкрд░реНрд╕58180200620.9729730
рд╕реНрдкрд░реНрд╕56236200711.0000000

рдХреЗрд╡рд▓ рдПрдХ рдЯреАрдо рдХреЛ рд╕рд╛рд░рдгреАрдмрджреНрдзрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреЗ рдПрдХ рдЭрд░рдирд╛ рдХреЗ рд╕рд╛рде


 table1 <- table1[ ,.(TeamName, WINS)][ , CumWins := cumsum(WINS), by = "TeamName"][ ,year := rep(seq(2004, 2018), each = length(unique(table1$TeamName)))][ , cumrank := frank(-CumWins, ties.method = "random"), by = "year"][ , value_rel := CumWins/CumWins[cumrank==1], by = "year"] 

рдЯреАрдореЛрдВ рдХреЗ рдорд╛рдирдХ рд╕реЗ рдХреЙрд▓рдо рдХреЗ рд░рдВрдЧ рдХреЛ рдмрджрд▓реЗрдВред


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


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХреЗ рдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рдореБрдЦреНрдп рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЗрдмрд▓ table_color рдмрдирд╛рдПрдВред Teamcolorcodes.com рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд░рдВрдЧред


TeamNameTEAM_color
рд╣рд╛рдХ# E03A3E
рд╕реЗрд▓реНрдЯрд┐рдХреНрд╕# 007A33
рдЬрд╛рд▓# 000000

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


  table_color <- table_color[order(TeamName)] cols <- table_color[, "TEAM_color"] 

рдЕрдВрдХрди


рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЪрд╛рд░реНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА 450 (15 рд╕реАрдЬрд╝рди * 30 рдЯреАрдо) рдЬреАрдд рдХреЗ рд╕рдВрдХреЗрддрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ gganimate рдкреИрдХреЗрдЬ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЪрд░ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд░реНрд╖реЛрдВ рддрдХ) рд╕реЗ "рд╡рд┐рднрд╛рдЬрд┐рдд" рдХрд░рддреЗ рд╣реИрдВред


 gg <- ggplot(table1, aes(cumrank, group = TeamName, fill = as.factor(TeamName), color = as.factor(TeamName))) + geom_tile(aes(y = CumWins/2, height = CumWins, width = 0.7), color = NA, alpha = 0.8) 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо ggplot рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВред aes рддрд░реНрдХ рдореЗрдВ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЪрд░ рдХреЛ рдЪрд╛рд░реНрдЯ рдкрд░ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЯреАрдордирд╛рдо рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХреЙрд▓рдо рдХреЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП fill рдФрд░ color рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдВрдЧреЗред


рд╕рдЪреНрдЪреЗ рд╕реНрддрдВрдн рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИ geom_tile рдХрд╛ рдЙрдкрдпреЛрдЧ geom_tile рд╣рдо рдЪрд╛рд░реНрдЯ рдкрд░ рдореМрдЬреВрдж рдбреЗрдЯрд╛ рдХреЛ рдЖрдпрддреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд╛рд░реНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдл рдХреЛ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ "рд╡рд┐рднрд╛рдЬрд┐рдд" рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдореЗрдВ рддреАрди, coord_equal() рдкрд░рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпрддреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╕реЗ рдХрдо рддрд░реНрдХ width рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реА рдЯрд╛рдЗрд▓ рдХреЙрд▓рдо рдХрд╛ рд░реВрдк рд▓реЗрддреА рд╣реИред


  geom_text(aes(y = 0, label = paste(TeamName, " ")), vjust = 0.2, hjust = 1, size = 6) + geom_text(aes(y = CumWins, label = paste0(" ",round(CumWins))), hjust = 0, size = 7) + coord_flip(clip = "off", expand = FALSE) + scale_fill_manual(values = cols) + scale_color_manual(values = cols) + scale_y_continuous(labels = scales::comma) + scale_x_reverse() + guides(color = FALSE, fill = FALSE) + 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ geom_text рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ geom_text : рдЯреАрдо рдХрд╛ рдирд╛рдо рдФрд░ рдЬреАрдд рдХреА рд╕рдВрдЦреНрдпрд╛ред coord_flip рдЕрдХреНрд╖реЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддрд╛ рд╣реИ, scale_fill_manual рдФрд░ scale_color_manual рд╕реНрддрдВрднреЛрдВ рдХрд╛ рд░рдВрдЧ рдмрджрд▓рддрд╛ рд╣реИ, scale_x_reverse "X" scale_x_reverse рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд░рдВрдЧреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ cols рд╡реЗрдХреНрдЯрд░ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВред


theme рдкрд░рдд рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдВ рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╣реЗрдбрд░ рдФрд░ рд▓реЗрдмрд▓ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ element_blank рд╣рдореЗрдВ рд╕рдорд╛рдирддрд╛ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ)ред рд╣рдо Y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд▓реАрдЬреЗрдВрдб, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб, рдлреНрд░реЗрдо, рдЧреНрд░рд┐рдб рд▓рд╛рдЗрди рдХреЛ plot.title ред рддрд░реНрдХреЛрдВ рдХреЗ plot.title ред plot.title , plot.subtitle , plot.caption рд╣рдо рд╢реАрд░реНрд╖рдХ, рдЙрдкрд╢реАрд░реНрд╖рдХ рдФрд░ рдЪрд╛рд░реНрдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЕрд░реНрде gglot2 рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


 theme(axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.position="none", panel.background=element_blank(), panel.border=element_blank(), panel.grid.major=element_blank(), panel.grid.minor=element_blank(), panel.grid.major.x = element_line( size=.1, color="grey" ), panel.grid.minor.x = element_line( size=.1, color="grey" ), plot.title=element_text(size=25, hjust=0.5, face="bold", colour="black", vjust=-1), plot.subtitle = element_text(size = 15), plot.caption =element_text(size=15, hjust=0.5, color="black"), plot.background=element_blank(), plot.margin = margin(2,2, 2, 4, "cm")) 

рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдПрдВ


рдореИрдВ transition_states рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдмреЗрд░реА рдкрд░ рдореЗрд░реЗ рдкрд╣рд▓реЗ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИред labs рдпрд╣ рдЪрд╛рд░реНрдЯ рдХрд╛ рд╢реАрд░реНрд╖рдХ, рдЙрдкрд╢реАрд░реНрд╖рдХ рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рддрд╛ рд╣реИред {closest_state} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЪрд╛рд░реНрдЯ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрд╖ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХреЙрд▓рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред


  anim <- gg + transition_states(year, transition_length = 4, state_length = 1) + view_follow(fixed_x = TRUE) + labs(title = "Cumulative Wins by teams in seasons", subtitle = "Season: {closest_state}", caption = "Telegram: @NBAatlantic, Twitter: @vshufiskiy\n Data sourse: stats.nba.com") 

рдЪрд╛рд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП nba_cumulative_wins рдлрд╝рдВрдХреНрд╢рдиред


рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд▓реЗрдЦрди рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, R рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд╣реЛрддрд╛ рд╣реИ:


 _ <- function( ) { _ } 

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдХреМрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рддрд░реНрдХ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдВрдЧреЗред рдкрд╣рд▓рд╛ рддрд░реНрдХ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдЗрдирдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдРрд╕реА рдЗрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЪрд╛рд░реНрдЯ рдкрд░ рдХреЛрдИ рднреА рдХрдорд╛рдВрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ: рдПрдХ рд╕реЗ (рдЬреЛ рдХрд┐ рд╡реНрдпрд░реНрде рд╣реИ) рд╕реЗ 30 рддрдХ (рд╡рд╣рд╛рдВ рдЕрдм рдмрд╕ рдирд╣реАрдВ рд╣реИ)ред рдореИрдВ рдЙрди 15 рд╡рд░реНрд╖реЛрдВ рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА рд╕рдордпрд╛рд╡рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 nba_cumulative_wins <- function(table, elements, first_season, last_season){ ... } 

рдЬрд╣рд╛рдВ table рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рд╣реИ,
elements - рдЙрди рдЯреАрдореЛрдВ рдХреЗ рдирд╛рдо рдЬрд┐рдиреНрд╣реЗрдВ рдЪрд╛рд░реНрдЯ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
first_season - рдЪрд╛рд░реНрдЯ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рд╕реАрдЬрд╝рди
last_season - рдЪрд╛рд░реНрдЯ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдЕрдВрддрд┐рдо рд╕реАрдЬрд╝рдиред


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


nba_cumulative_wins <- function(table, elements, first_season, last_season = 2018)


рддрдм рддрдХ рд╢реЗрдбреНрдпреВрд▓ 2018/19 рд╕реАрдЬрд╝рди рддрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рд╕рдВрдХреЗрдд рди рджрд┐рдпрд╛ рдЬрд╛рдПред


рддрд░реНрдХ elements рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛, first_season , last_season


elements рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЙрди рдЯреАрдореЛрдВ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЪрд╛рд░реНрдЯ рдкрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм 2 рдпрд╛ 3 рдРрд╕реА рдЯреАрдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдкреВрд░реА рд▓реАрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ elements = c() рдФрд░ рд╕рднреА 30 рдЯреАрдореЛрдВ рдХреЗ рдирд╛рдо рдХреЛ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред


рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрдИ рд╕рдореВрд╣реЛрдВ рдореЗрдВ elements рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдХреЛ "рд╡рд┐рднрд╛рдЬрд┐рдд" рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
nba_cumulative_wins рдлрд╝рдВрдХреНрд╢рди nba_cumulative_wins рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреАрдореЛрдВ, рдбрд┐рд╡реАрдЬрдиреЛрдВ, рд╕рдореНрдореЗрд▓рдиреЛрдВ рдпрд╛ NBA рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:


  select_teams <- unique(table1$TeamName) select_div <- unique(table1$Division) select_conf <- unique(table1$Conference) select_nba <- "NBA" table1 <- if(elements %in% select_teams){ table1[TeamName %in% elements] } else if (elements %in% select_div){ table1[Division %in% elements] } else if(elements %in% select_conf){ table1[Conference %in% elements] } else if(elements == "NBA"){ table1 } else { NULL } 

select_ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╡реИрдХреНрдЯрд░ рдореЗрдВ рд╕рднреА 30 рдЯреАрдореЛрдВ, 6 рдбрд┐рд╡реАрдЬрдиреЛрдВ, 2 рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рдПрдирдмреАрдП рдХреЗ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ unique рдлрд╝рдВрдХреНрд╢рди 15 рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рдЫреЛрдбрд╝рддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рдореЗрдВ рд╡рд░реНрд╖реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛)ред


рдлрд┐рд░, if...else рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рджрд░реНрдЬ рдХрд┐рдП рдЧрдП elements рддрд░реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ ( %in% рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рд╡реЗрдХреНрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ), рдФрд░ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм, рдЕрдЧрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рджрдХреНрд╖рд┐рдг-рдкрд╢реНрдЪрд┐рдо рдбрд┐рд╡реАрдЬрди рдореЗрдВ рдЦреЗрд▓рдиреЗ рд╡рд╛рд▓реА рдЯреАрдореЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ


elements = c("Mavericks", "Spurs", "Rockets", "Grillies", "Pelicans")


рдмрд╕ рджрд░реНрдЬ рдХрд░реЗрдВ


elements = "Southwest" , рдЬреЛ рдмрд╣реБрдд рддреЗрдЬрд╝ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред


рдореМрд╕рдо рдЪреБрдирдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдХрд╛рд░рдг, рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рднреА рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд▓рд╛рдЗрди рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ:


 table1 <- table1[SeasonID >= as.numeric(paste(2, first_season, sep = "")) & SeasonID <= as.numeric(paste(2, last_season, sep = ""))] 

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЪреБрдиреЗ рд╣реБрдП рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдЖрддреА рд╣реИрдВред year рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдб рднреА рдмрджрд▓рддрд╛ рд╣реИред рдЕрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 table1 <- table1[ ,year := rep(seq(first_season, last_season), each = length(unique(table1$TeamName)))] 

рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рд░рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрдЯрд┐рд▓ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ table_color рдХреЗрд╡рд▓ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕рдВрдХреБрдЪрди "рд╡рд╛рдкрд╕" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, if...else рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред


  elements1 <- if (elements == "NBA"){ c("Hawks", "Celtics", "Nets", "Hornets", "Bulls", "Cavaliers", "Mavericks", "Nuggets", "Pistons", "Warriors", "Rockets", "Pacers", "Clippers", "Lakers", "Grizzlies", "Heat", "Bucks", "Timberwolves", "Pelicans", "Knicks", "Thunder", "Magic", "76ers", "Suns", "Trail Blazers","Kings", "Spurs", "Raptors", "Jazz", "Wizards") } else if (elements == "West") { c("Mavericks","Nuggets", "Warriors", "Rockets", "Clippers", "Lakers", "Grizzlies","Timberwolves", "Pelicans", "Thunder", "Suns", "Trail Blazers","Kings", "Spurs", "Jazz") } else if (elements == "East") { c("Hawks", "Celtics", "Nets", "Hornets", "Bulls", "Cavaliers","Pistons", "Pacers", "Heat", "Bucks", "Knicks", "Magic", "76ers", "Raptors", "Wizards") } else if (elements == "Pacific") { c("Warriors", "Clippers", "Lakers", "Suns", "Kings") } else if (elements == "Southeast") { c("Magic", "Hornets", "Heat", "Hawks", "Wizards") } else if (elements == "Southwest") { c("Mavericks", "Grizzlies", "Pelicans", "Rockets", "Spurs") } else if (elements == "Central") { c("Bucks", "Pacers", "Pistons", "Bulls", "Cavaliers") } else if (elements == "Atlantic") { c("Knicks", "Nets", "Celtics", "Raptors", "76ers") } else if (elements == "Northwest") { c("Nuggets", "Trail Blazers", "Jazz", "Thunder", "Suns") } else { elements } 

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЬрд┐рди рдХрдорд╛рдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдирдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ dplyr рдкреИрдХреЗрдЬ рд╕реЗ inner_join рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ table_color рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред inner_join рдореЗрдВ рдХреЗрд╡рд▓ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рджреЛрдиреЛрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред


  table_elements1 <- data.table(TeamName = elements1) table_color <- table_color[order(TeamName)] inner_table_color <- inner_join(table_color, table_elements1) cols <- inner_table_color[, "TEAM_color"] 

рдлрд╝рдВрдХреНрд╢рди рд╢реАрд░реНрд╖рдХ рдФрд░ рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреА рд╡рд░реНрддрдиреА рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рд╡реЗ рдЗрд╕ рд░реВрдк рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ:


 anim <- gg + transition_states(year, transition_length = 4, state_length = 1) + view_follow(fixed_x = TRUE) + labs(title = paste("Cumulative Wins by teams in seasons", first_season, "-", last_season, sep = " "), subtitle = paste(if (elements %in% select_div ){ paste(elements, "Division", sep = " ") } else if (elements %in% select_conf ){ paste("Conference", elements, sep = " ") }, "Season: {closest_state}", sep = " "), caption = "Telegram: @NBAatlantic, Twitter: @vshufiskiy\nData sourse: stats.nba.com") 

рдкреНрд░рддрд┐рдкрд╛рджрди


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдм рдХрд▓реНрдкрдирд╛ рд╣реИред


 animate(anim, nframes = (last_season - first_season + 1) * (length(unique(table1$TeamName)) + 20), fps = 20, width = 1200, height = 1000, renderer = gifski_renderer(paste(elements[1], "cumwins.gif", sep = "_"))) 

рдореИрдВрдиреЗ nframes рд░реВрдк рд╕реЗ nframes рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ nframes рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рдЪрдпрдирд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЧрддрд┐ рдмрдврд╝ / рдШрдЯ рдЬрд╛рдПред


рд╕рдордп рд╕рд╛рд░рд┐рдгреА



рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реА рдкреЛрд╕реНрдЯ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЧрд┐рдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдбред


рдпрджрд┐ рдЖрдк рдЗрди рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдЦреЗрд▓ рдШрдЯрдХ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк sports.ru "рдЕрдЯрд▓рд╛рдВрдЯрд┐рдХ рдХреЗ рджреЛрдиреЛрдВ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░" рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ

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


All Articles