рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ _рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕_ рдлрд╝реАрдЪрд░ (рдЬрд┐рд╕реЗ _рд░реЛрд▓рд┐рдВрдЧ рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕_, _рд╕реНрд▓рд╛рдЗрдбрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ_ рдпрд╛ _рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ_/_рдореВрд╡рд┐рдВрдЧ рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕_ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдирд╛рддреЗ рд╣реБрдП ~4 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдирд╛ред
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд rollmean
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕рд░рд▓реАрдХреГрддред
x = data.table(v1=1:5, v2=1:5)
k = c(2, 3)
i - single column
j - single window
m - int referring to single row
w - current row's sum of rolling window
r - answer for each i, j
md5-be70673ef4a3bb883d4f334bd8fadec9
for i in x
for j in k
r = NA_real_
w = 0
for m in 1:length(i)
w = w + i[m]
w = w - i[m-j]
r[m] = w / j
рд╣рд╛рдВ, рдФрд░ рдХрдИ рдФрд░ рд▓реБрдврд╝рдХреЗ рд╣реБрдП рдХрд╛рд░реНрдп рдПрдХ рд╣реА рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ (рд╕рд╣рд┐рдд
рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди/рдХреЛрдИ рдЕрдкреЗрдХреНрд╖рд╛-рдЖрдзрд╛рд░рд┐рдд рдХреНрд╖рдг, рдФрд░ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди
рд░реЛрд▓рдкреНрд░реЛрдбрдХреНрдЯ рдХреА рддрд░рд╣ рдЬреЛ + рдХреЗ рдмрдЬрд╛рдп рдЙрд▓рдЯрд╛ * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рдЦрд┐рдбрд╝рдХреА
рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдХрдИ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рд╕рдореВрд╣реЛрдВ (рд╡рд┐рдВрдбреЛрдЬрд╝) рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЛрд▓рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХреАред рддрдм рдПрдкреАрдЖрдИ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
DT[i, j,
by = roll(width=5, align="center")]
рдлрд┐рд░ рдпрджрд┐ j
рдореЗрдВ mean(A)
, рддреЛ рд╣рдо рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ rollmean(A)
- рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рд╣рдо рдЕрднреА gmean()
рд╕рд╛рде рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╛ j
рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЬреИрд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдЪрд▓рд╛рдПрдВ), рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдо .SD
рдбреЗрдЯрд╛ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░реЗрдВрдЧреЗред рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рд╣рдо рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ рддреБрд░рдВрддред
рдЗрд╕ рддрд░рд╣ 10+ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХред рдФрд░ рдпрд╣ data.table-y рднрд╛рд╡рдирд╛ рдореЗрдВ рднреА рд▓рдЧрддрд╛ рд╣реИред
рд╣рд╛рдБ рд╕рд╣рдордд
рд╢рдирд┐рд╡рд╛рд░, рдЕрдкреНрд░реИрд▓ реирез, реирежрезрео, рей:рейрео рдЕрдкрд░рд╛рд╣реНрди рдкрд╛рд╢рд╛ рд╕реНрдЯреЗрдЯреНрд╕реЗрдВрдХреЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com . рдкрд░
рд▓рд┐рдЦрд╛ рдерд╛:
рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд░реЛрд▓рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдореВрд╣рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХреА рдереА
рдПрдХрд╛рдзрд┐рдХ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рд╕рдореВрд╣реЛрдВ (рд╡рд┐рдВрдбреЛ) рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯред рддрдм рдПрдкреАрдЖрдИ рджрд┐рдЦреЗрдЧрд╛
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:рдбреАрдЯреА [рдореИрдВ, рдЬреЗ,
рджреНрд╡рд╛рд░рд╛ = рд░реЛрд▓ (рдЪреМрдбрд╝рд╛рдИ = 5, рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ = "рдХреЗрдВрджреНрд░")]рдлрд┐рд░ рдпрджрд┐ j рдореЗрдВ, рдорд╛рди рд▓реАрдЬрд┐рдП, рдорд╛рдзреНрдп (A) рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ
Rollmean(A) -- рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рд╣рдо рдЕрднреА gmean() рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╛ рдЬреЗ рдХреИрди
рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдХрд╣рддреЗ рд╣реИрдВ, рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдЪрд▓рд╛рдПрдБ
рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдВрдбреЛ), рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдо .SD data.table рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░реЗрдВрдЧреЗ - рдмрд┐рд▓реНрдХреБрд▓
рдЬреИрд╕реЗ рд╣рдо рдЕрднреА рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВредрдЗрд╕ рддрд░рд╣ 10+ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХред рдФрд░ рдпрд╣
data.table-y рднрд╛рд╡рдирд╛ рдореЗрдВ рднреА рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИред-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/Rdatatable/data.table/issues/2778#issuecomment-383275134 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AHQQdbADiE4aAI1qPxPnFXUM5gR-0w2Tks5tquH8gaJpZM4TeTQf
.
@ рд╕реЗрдВрдЯ-рдкрд╛рд╢рд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░, data.table-y рднрд╛рд╡рдирд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рд╕реАрдорд╛рдПрдВ рд▓рдЧрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред
DT[, rollmean(V1, 3), by=V2]
DT[, .(rollmean(V1, 3), rollmean(V2, 100))]
[.data.table
рдмрд╛рд╣рд░ рд░реЛрд▓рдореАрди рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдо рд╢рд┐рдлреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВrollmean(rnorm(10), 3)
DT[, .(rollmean(list(V1, V2), c(5, 20)), rollmean(list(V2, V3), c(10, 30)))]
j
рдХреЙрд▓ рдореЗрдВ mean
рдФрд░ rollmean
рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВDT[, .(rollmean(V1, 3), mean(V1)), by=V2]
рдЖрдорддреМрд░ рдкрд░ by
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдЫреЛрдЯреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рдЗрдирдкреБрдЯ рдХреЗ рд╕рдорд╛рди рд▓рдВрдмрд╛рдИ рдХреЗ рд╡реЗрдХреНрдЯрд░ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред SQL рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдирд┐рдореНрди рд╢реИрд▓реА рдореЗрдВ API рд╣реИ:
SELECT AVG(value) OVER (ROWS BETWEEN 99 PRECEDING AND CURRENT ROW)
FROM tablename;
рдЖрдк рдЗрд╕реЗ рдЕрднреА рднреА рдЧреНрд░реБрдк рдмрд╛рдп рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
SELECT AVG(value) OVER (ROWS BETWEEN 99 PRECEDING AND CURRENT ROW)
FROM tablename
GROUP BY group_columns;
рддреЛ SQL рдореЗрдВ рд╡реЗ рдлрд╝рдВрдХреНрд╢рди SELECT
рдЬреЛ DT рдореЗрдВ j
рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдбреАрдЯреА рдореЗрдВ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
DT[, rollmean(value, 100)]
DT[, rollmean(value, 100), group_columns]
рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдПрдХ рд╣реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ shift
рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рднреА рджреЗрддрд╛ рд╣реИред
рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рд╢рд┐рдлреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
SELECT LAG(value, 1) OVER ()
FROM tablename;
mean
рдФрд░ rollmean
рдХреЗрд╡рд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВред рдПрдХ рдХрд╛ рдорддрд▓рдм рд╕рдореВрд╣ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХрддреНрд░ рд╣реЛрдирд╛ рдерд╛, рджреВрд╕рд░рд╛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдирд╣реАрдВред рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП GROUP BY
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ GROUP BY
рдЬреИрд╕реЗ рд╕рдореБрдЪреНрдЪрдп рдХреЗ рд▓рд┐рдП mean
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЕрдВрддрддрдГ рд╕рдореВрд╣реАрдХрд░рдг рдХрд░рддреЗ рд╕рдордп рдХреБрд▓ рдЕрдиреБрджрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛) рдЦрдВрдб рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ)ред
рдореБрдЭреЗ mean
рд╕рдорд╛рди рдЕрдиреБрдХреВрд▓рди рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рддрд░реНрдХ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд╣ рд╕рдм рд╕рд┐рд░реНрдл data.table-y рдХреЗ рд▓рд┐рдП рдЖрддреНрдорд╛ред рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ data.table-y рднрд╛рд╡рдирд╛ рднреА рд╣реИ, рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ :=
рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ shift
ред рдпрд╣ рд╕рд┐рд░реНрдл рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реЗрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ data.table рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
@jangorecki рдзрдиреНрдпрд╡рд╛рдж, рдпреЗ рд╕рднреА рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рдмреЗрд╢рдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрднрд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ "рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ" рдХреНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рд░реЛрд▓рдореАрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ 2-рд╕реНрддрд░реАрдп рд╕рдореВрд╣реАрдХрд░рдг рд╣реИ: DT[, mean(V1), by=.(V2, roll(3))]
ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдореЗрд░реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдЖрдХрд╛рд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ ...
рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рд░реЛрд▓рд┐рдВрдЧ рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП SQL рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╡реЗ рдорд╛рдирдХ рдПрдЧреНрд░реАрдЧреЗрдЯрд░ рдЬреИрд╕реЗ AVG
рдлрд┐рд░ рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрд┐рдВрдЧ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЯреНрд░рд╛рдВрдЬреИрдХреНрдЯ-рдПрд╕рдХреНрдпреВрдПрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╡рд╣рд╛рдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рддрд╛рд░реНрдХрд┐рдХ/рднреМрддрд┐рдХ рдкрдВрдХреНрддрд┐ рдЪрдпрди рдХреЗ рдмреАрдЪ рднреЗрджред рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдУрд╡рд░" рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд╣реА рдУрд╡рд░ рдХреНрд▓реЙрдЬ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХрд▓ roll()
рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрдо рд╣реЛрдЧреАред
рд╕рд╛рде рд╣реА, рдпрд╣ SO рдкреНрд░рд╢реНрди рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ SQL рдореЗрдВ рдУрд╡рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреНрдпреЛрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдЖрдк Group BY SalesOrderID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ GROUP BY рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЙрди рд╕реНрддрдВрднреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдореЗрдХрд┐рдд рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ GROUP BY рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, GROUP BY рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдВрдбреЛрдб рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рдореЗрдХрд┐рдд рдФрд░ рдЧреИрд░-рдПрдХрддреНрд░рд┐рдд рджреЛрдиреЛрдВ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЕрдкрдиреА рдЙрджрд╛рд╣рд░рдг рдХреНрд╡реЗрд░реА рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдПрдХ рд╣реА SalesOrderIDs рдХреЗ рд╕рдореВрд╣реЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрд░реНрдбрд░рдХреНрдпреВрдЯреА рдорд╛рди рдФрд░ рдЙрдирдХреА рд░рдХрдо, рдЧрдгрдирд╛, рдФрд╕рдд рдЗрддреНрдпрд╛рджрд┐ рджреЛрдиреЛрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдорд╛рдирдХ SQL рдХреА рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд╣рд╛рдБ рд╕рдореВрд╣-рджрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрд╕рдВрдЧрдард┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ A
рдФрд░ mean(A)
рджреЛрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛)ред рд╣рд╛рд▓рд╛рдБрдХрд┐ data.table
рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рдЪреБрдирд╛рд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИред
рдЕрдм, рдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рдХреНрд░ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: "рд░реЛрд▓рд┐рдВрдЧ" рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рд╣реИрдВ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐ред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдпрд╣ рд╣реИ, рдЖ рд░рд╣рд╛ рд╣реИ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрд╡рд┐рджреН рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ:
рдХреБрдЫ рд╢реЛрд░ рдЗрдирдкреБрдЯ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрд╡рд▓реЛрдХрди рд╣реИрдВ рдФрд░ рдЖрдк "рдФрд╕рдд рдорд╛рддреНрд░рд╛" рдХреА рдХреБрдЫ рдзрд╛рд░рдгрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рддреА рд░рд╣рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдкрд┐рдЫрд▓реЗ 100 рдЕрд╡рд▓реЛрдХрдиреЛрдВ рдкрд░ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп" рдпрд╛ "рд╕рднреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ рдЖрдк рдЗрдирдкреБрдЯ рдХреА рдПрдХ рд╕реАрдорд╛ рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "┬▒ 50 рдЕрд╡рд▓реЛрдХрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп" рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрди рд╕рднреА рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЧреНрд░реБрдкрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░реЛрд▓рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рджреЛрдиреЛрдВ рддрд░реАрдХреЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред
рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рд░реЛрд▓рд┐рдВрдЧ рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП SQL рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд░реЛрд▓рд┐рдВрдЧ рдЬреЙрдЗрди рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдУрд╡рд░" рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд╣реА рдУрд╡рд░ рдХреНрд▓реЙрдЬ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХрд▓ рд░реЛрд▓ () рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрдо рд╣реЛрдЧреАред
рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рдмрд╛рдд рд╣реИ, рдпрджрд┐ рдЖрдк рдПрдХ рд╣реА OVER() рдХреЛ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ GROUP BY
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ, рд▓реБрдХрдЕрдк рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдиреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдЬреЛ рднреА рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╛рдп рдХреЗ рд▓рд┐рдП рдЗрд▓рд╛рдХреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░ () рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рд╕реЗ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдбреЙрдХреНрд╕ рд╕реЗ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, GROUP BY рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдВрдбреЛрдб рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рдореЗрдХрд┐рдд рдФрд░ рдЧреИрд░-рдПрдХрддреНрд░рд┐рдд рджреЛрдиреЛрдВ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
data.table рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рдореЗрдВ :=
рдФрд░ by
рдХрд░рддреЗ рд╣реИрдВред
рддреЛ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдорд╛рдирдХ SQL рдХреА рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд╣рд╛рдБ рд╕рдореВрд╣-рджрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрд╕рдВрдЧрдард┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ A рдФрд░ рдорд╛рдзреНрдп (A) рджреЛрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛)ред рд╣рд╛рд▓рд╛рдБрдХрд┐ data.table рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рдЪреБрдирд╛рд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИред
рдпрд╣ SQL рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ GROUP BY рдХрд╛ рдХреЗрд╡рд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ, рдХрд┐ рдпрд╣ рд╕рдореЗрдХрд┐рдд рд╣реЛрдЧрд╛, рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рд╣рдорд╛рд░реЗ by
рд╕рдореБрдЪреНрдЪрдпред рдирдИ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдПрдкреАрдЖрдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред SQL рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЧреНрд░реБрдкрд┐рдВрдЧ FUN() OVER (PARTITION BY ...)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ _partition by_ рдПрдХрд▓ рдорд╛рдк рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╕рдореВрд╣ рдХреА рддрд░рд╣ рд╣реИред рдЗрд╕рд▓рд┐рдП SQL рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕ API рдХреЛ j
рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП j = mean(V1, roll=5)
рдпрд╛ j = over(mean(V1), roll=5)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рднреА рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред
рдЖрдк "┬▒50 рдкреНрд░реЗрдХреНрд╖рдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп" рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реБрдЪрд╛рд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рд▓рд┐рдП align
рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ, рдкрд╣рд▓рд╛ рд╡рд┐рд╕реНрддрд╛рд░ "рдЪрд┐рдХрдиреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ" рдХреЛ рджреЗрдЦрдирд╛ рд╣реИ: рдкрд┐рдЫрд▓реЗ рдЕрд╡рд▓реЛрдХрдиреЛрдВ рдкрд░ рдПрдХ рдФрд╕рдд рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЕрддреАрдд рдореЗрдВ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рдЙрд╕рдХрд╛ рдпреЛрдЧрджрд╛рди рдЙрддрдирд╛ рд╣реА рдХрдо рд╣реЛрдЧрд╛ред рдпрд╛ рдПрдХ рдЧрд╛рдКрд╕реА рдХрд░реНрдиреЗрд▓ рдкрд░ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рдФрд╕рдд рдЕрд╡рд▓реЛрдХрдиред
рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ рдХреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ (рд╡рд╕реНрддреБрддрдГ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛) рд╣реИрдВ, рд╕рдмрд╕реЗ рдЖрдо рд╕реНрдореВрдерд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдлрдВрдХреНрд╢рди (рд░реЛрд▓рдореАрди/рдПрд╕рдПрдордП рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдПрдХреНрд╕рдкреЛрдиреЗрдВрд╢рд┐рдпрд▓ рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ (рдИрдПрдордП) рд╣реИред рдХреМрди рд╕рд╛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреМрди рд╕рд╛ рдирд╣реАрдВ, рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдгрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЕрдм рддрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрди рд╕рднреА рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЧреНрд░реБрдкрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░реЛрд▓рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк SO, рдФрд░ рд╣рдорд╛рд░реЗ рд░реЗрдкреЛ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣рд╛рдВ рд╡реЗ рдХреБрдЫ рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ 95+% рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдореБрдЭреЗ рдИрдПрдордП рдФрд░ рдЕрдиреНрдп рдПрдордП рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИ), рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВред рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЬрд┐рдирдореЗрдВ рдореИрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реВрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 4 рд╕рд╛рд▓ рд╕реЗ рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрд╡рд┐рджреН рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЖрддреЗ рд╣реБрдП, рдпрд╣ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ
рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕рд┐рдВрдЧ (рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛) рдФрд░ рдореВрд▓реНрдп рдкреНрд░рд╡реГрддреНрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рджрд╕рд┐рдпреЛрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд▓рддреА рдФрд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛) рд╕реЗ рдЖрддрд╛ рд╣реИред
rollmean
рдбреНрд░рд╛рдлреНрдЯ рдХреЛ roll
рд╢рд╛рдЦрд╛ рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЬреЛ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдореМрдЬреВрдж na.rm=FALSE
рдФрд░ NA рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди NA рдХреЛ рд▓рдЧрд╛рддрд╛рд░ mean
рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЬреЛ ISNAN
рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рд▓рдЧрд╛рддрд╛ рд╣реИред рд╣рдо рдПрдкреАрдЖрдИ рдХреЛ рддреЗрдЬ рд▓реЗрдХрд┐рди рдХрдо рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдореЗрдВ рдХреЛрдИ рдПрдирдП рдирд╣реАрдВ рд╣реИред
рдкреАрдЖрд░ #2795 . рдореЗрдВ рд╣реИ
@mattdowle рдкреАрдЖрд░ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд░рд╣рд╛ рд╣реИ
рд╣рдо рдЗрд╕реЗ data.table рдХреЗ рдЕрдВрджрд░ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╣рдо рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдФрд░ data.table рд╕реЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдПрдХреАрдХреГрдд рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╣реА рд╕рдВрднрд╡ рдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБред рдЯреЗрдмрд▓; рдЬреИрд╕реЗ рдЕрдВрджрд░ [...] рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд) рдФрд░ рд╕реА рд╕реНрддрд░ рдкрд░ рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбреЗрдЯрд╛ред рдЯреЗрдмрд▓ рдЗрдВрдЯрд░реНрдирд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлреНрд░реЛрд▓* рдХреЛ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдгред
рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдЧрддрд┐ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЖрдЬрдХрд▓ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдХреБрдВрдЬреА/рд╕реВрдЪрдХрд╛рдВрдХ рдлреНрд░реЛрд▓рдорд┐рди/рдлреНрд░реЛрд▓рдореИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдк рдЪрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдк рдЪрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рд╣рдордиреЗ рдЕрднреА рддрдХ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ GForce рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рд╕рдордЭ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рд░реЛрд▓ * рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдЬрд╛рд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ рд▓реЗрдХрд┐рди рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИ (рдЧреИрд░-рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп, рдпреЛрдЧ, рдЖрджрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд)ред
рдпрджрд┐ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдареЛрд╕ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдКрдкрд░ рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рднрд░рдиреЗ, рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреВрдЫрдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ред рдЕрдЧрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рддреЛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ sparklyr
рдмрд╣реБрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
@harryprince рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдереЛрдбрд╝рд╛ рдФрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реНрдкрд╛рд░реНрдХрд▓реАрд░ рдореЗрдВ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?
"рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕" рдХреЗ рдЕрдиреБрд╕рд╛рд░
рд░реЛрд▓рд┐рдВрдЧ рд╕рдореБрдЪреНрдЪрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪреМрдбрд╝рд╛рдИ рд╡рд╛рд▓реА рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЖрдзрд╛рд░ R рдпрд╛ dplyr рдореЗрдВ рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди RcppRoll рдЬреИрд╕реЗ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВред
AFAIU рдЖрдк рд╕реНрдкрд╛рд░реНрдХрд▓реАрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╕реНрдЯрдо рд╕реНрдкрд╛рд░реНрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП dplyr рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╣реА рд╣реИ?
рдпрд╣ рдореБрджреНрджрд╛ рд░реЛрд▓рд┐рдВрдЧ рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЕрдиреНрдп "рдкреНрд░рдХрд╛рд░" рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА data.table
рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИрдВред
рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рддрд╛рдХрд┐ рд╣рдо (рдЗрди-рдореЗрдореЛрд░реА) рдкреНрд░рджрд░реНрд╢рди рдмрдирд╛рдо sparklyr
/ SparkR
рддреБрд▓рдирд╛ рдХрд░ рд╕рдХреЗрдВ, рдпрд╣ рднреА рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрднреА рд╣реБрдЖ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╢реНрди:
рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрдВрднреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдВрдбреЛ рдЖрдХрд╛рд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдкрдХ рджрд╛рдпрд░рд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рд░реЛрд▓рд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреВрдЫрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдФрд╕рдд рдЙрддреНрдкрд╛рдж рдореВрд▓реНрдп рдХрд╛ рдЪрдпрди рддрд┐рдерд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдФрд░ рдлрд┐рд░ рд╢рд╛рдпрдж рд╕рдкреНрддрд╛рд╣ + рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ - рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рд╢реНрди рдХреЗ рднреАрддрд░ред рдЕрдЧрд░ рд╣рдо рдХрднреА рднреА рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
DT[, .( mean(price, by=date),
mean(price, by=week),
mean(price, by=c(week, category)) )]
рдЕрдм, рдпрджрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА, рддреЛ рдпрд╣ рд╡рд╣рд╛рдВ рд╕реЗ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдпрдореЛрдВ рддрдХ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЫрд▓рд╛рдВрдЧ рд╣реЛрддреА:
DT[, .( mean(price, roll=5),
mean(price, roll=20),
mean(price, roll=100) )]
рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ rollmean(price, 5)
рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ - рдмрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдлреЗрдВрдХрдирд╛ ...
@st-pasha
рджрд┐рдирд╛рдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдФрд╕рдд рдЙрддреНрдкрд╛рдж рдореВрд▓реНрдп рдХрд╛ рдЪрдпрди рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдФрд░ рдлрд┐рд░ рд╢рд╛рдпрдж рд╕рдкреНрддрд╛рд╣+рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ -- рд╕рднреА рдПрдХ рд╣реА рдХреНрд╡реЗрд░реА рдХреЗ рднреАрддрд░ред
AFAIU рдпрд╣ ?groupingsets
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ [.data.table
рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред
@jangorecki , @st-pasha, and Co. - рдЗрд╕ рдкрд░ рдЖрдкрдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдВрд╢рд┐рдХ рд╡рд┐рдВрдбреЛ рд╕рдорд░реНрдерди рдХреЛ рджрд╛рдпрд░реЗ рд╕реЗ рдХреНрдпреЛрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпрд╛ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд░реЛрдбрдореИрдк рдкрд░ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ? рдХрднреА-рдХрднреА рдореЗрд░реЗ рдХрд╛рдо рдЖрдПрдЧрд╛, рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднрд░ рджреЗрдЧрд╛ рдЬреЛ рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ zoo
рдпрд╛ RcppRoll
рдореЗрдВ рдирд╣реАрдВ рднрд░рд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкреНрд░рд╢реНрди рдПрдХ рд░реЛрд▓рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ partial = TRUE
рддрд░реНрдХ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@msummersgill рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд┐рдЯ рд╢рд╛ рдХреЛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдВрд╢рд┐рдХ рд╡рд┐рдВрдбреЛ рдлреАрдЪрд░ рдХреЛрдб рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЙрд╕реЗ рдмрд╛рдж рдореЗрдВ рдХреЛрдб рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдкрд░ рднреА рдЫреЛрдЯреА рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдЧрдд рд▓рдЧрд╛ рд░рд╣рд╛ рдерд╛ред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рд╢рд╛рдпрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд╣реИ рд╡реИрд╕рд╛ рд╣реА рдкреВрд░рд╛ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ 1:window_size
рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдкрддрд╛ рдЖрдВрд╢рд┐рдХ рд╡рд┐рдВрдбреЛ рдХреЛ рднрд░реЗрдВред рддреЛ рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдКрдкрд░реА рднрд╛рдЧ рдХреЗрд╡рд▓ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рднреА рд╣рдо рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ adaptive
рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ partial
рд╕реБрд╡рд┐рдзрд╛ adaptive
рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИред ?froll
рдореИрдиреБрдЕрд▓ рдореЗрдВ adaptive
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ partial
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЪрд┐рдкрдХрд╛рдирд╛:
d = as.data.table(list(1:6/2, 3:8/4))
an = function(n, len) c(seq.int(n), rep(n, len-n))
n = an(3, nrow(d))
frollmean(d, n, adaptive=TRUE)
рдмреЗрд╢рдХ рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдВрд╢рд┐рдХ рд╡рд┐рдВрдбреЛ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреИрд░-рдЕрдиреБрдХреВрд▓реА рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рддрдирд╛ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
AFAIK zoo
рдореЗрдВ partial
рд╕реБрд╡рд┐рдзрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдореЗрдВ рд░реЛрд▓рд┐рдВрдЧ рд░рд┐рдЧреНрд░реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?
@waynelapierre рдЕрдЧрд░ рдЙрд╕рдХреА рдорд╛рдВрдЧ рд╣реЛрдЧреА, рддреЛ рд╣рд╛рдБред рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЗрд░рд╛ +1 . рд╣реИ
рдзрдиреНрдпрд╡рд╛рдж рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╡рд╛рд▓ред рдореБрдЭреЗ рдХреЗрд╡рд▓ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп рдпрд╛ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдпрд┐рдХрд╛ рдЬреИрд╕реЗ рд╕рд╛рдзрд╛рд░рдг рд░реЛрд▓рд┐рдВрдЧ рдПрдЧреНрд░реАрдЧреЗрдЯ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдбреАрдЯреА рдбреЗрдЯрд╛рдлреНрд░реЗрдо рд░реЛрд▓рд┐рдВрдЧ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рд░реЛрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рднреА рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХрд╣реЗрдВ, рдкрд┐рдЫрд▓реЗ 10 рдЕрд╡рд▓реЛрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЛрд▓рд┐рдВрдЧ рдбреАрдЯреА рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕ рдкрд░ lm
рдкреНрд░рддрд┐рдЧрдорди рдЪрд▓рд╛рдПрдВред
рдзрдиреНрдпрд╡рд╛рдж!
@randomgambit рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдорд╛рдВрдЧ рди рд╣реЛред рд╕реА рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рдмреЗрд╕ рдЖрд░/рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рд╕реЗ рддреЗрдЬ рд╣реЛрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП "рдСрдирд▓рд╛рдЗрди" рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдФрд░ рд╣рдо рдЕрдВрддрддрдГ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЙрди рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдХрд╛рдЯрдирд╛ рд╣реЛрдЧрд╛ред
@jangorecki рджрд┐рд▓рдЪрд╕реНрдк рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsibble
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд░рд╣реВрдВрдЧрд╛... DATA.TABLES
рдПрдХ tibble
! рджрд┐рдорд╛рдЧ рдЪрдХрд░рд╛ рдЧрдпрд╛ :D
рдПрдХ рдЧреИрд░-рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ "рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХ рдХрд░реНрд╡" рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП frollmean
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЬреЛ P[y | x]
рдмрд╛рдЗрдирд░реА y
рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ x
рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ y
рдХреЛ logical
рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ integer
рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛:
DT = data.table(x = rnorm(1000), y = runif(1000) > .5)
DT[order(x), .(x, p_y = frollmean(y, 50L))]
рдлреНрд░реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ (рдордЬрд╝рд╛ = "рдорд╛рдзреНрдп", x = x, n = n, рднрд░рдг = рднрд░рдг, algo = algo, align = align, :
x рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреИрд╕реЗ рд╡реЗрдХреНрдЯрд░рдХреГрдд x
/ n
рддрд░реНрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред
https://github.com/AdrianAntico/RemixAutoML/commit/d8370712591323be01d0c66f34a70040e2867636#r34784427
рдХрдо рд▓реВрдк, рдХреЛрдб рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдмрд╣реБрдд рддреЗрдЬ (10x-36x рд╕реНрдкреАрдбрдЕрдк)ред
рдлреНрд░реЛрд▓рдЕрдкреНрд▓рд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░: https://github.com/Rdatatable/data.table/pull/3600
### fun mean sum median
# rollfun 8.815 5.151 60.175
# zoo::rollapply 34.373 27.837 88.552
# zoo::roll[fun] 0.215 0.185 NA
# frollapply 5.404 1.419 56.475
# froll[fun] 0.003 0.002 NA
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ FUN (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдХреЛ рдлреНрд░реЛрд▓рдПрдкреНрд▓реА рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, R рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдмрд▓ рдФрд░ рдлрд╝реНрд░реЙрд▓рд╛рдкреНрд▓реА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ? рддрдм рд╣рдо рд░реЛрд▓рд┐рдВрдЧ рд░рд┐рдЧреНрд░реЗрд╢рди рдпрд╛ рд░реЛрд▓рд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдмреЗрдирдлреЛрд░реНрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рд▓реЗрдмрд▓ рдкрд░ рд╕рд╛рд░рд╛рдВрд╢ред
рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ... рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЖрдк frollapply(dt, 3, FUN)
рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕реВрдЪреА nrow(dt)
frollapply(dt, 3, FUN)
рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪреА рддрддреНрд╡ data.table
рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ FUN(dt[window])
?
frollapply(x=dt, n=3, fun=FUN)[[3]]
рдмрд░рд╛рдмрд░ FUN(dt[1:3])
frollapply(x=dt, n=3, FUN=FUN)[[4]]
рдмрд░рд╛рдмрд░ FUN(dt[2:4])
рдХреНрдпрд╛ рд╡реЛ рд╕рд╣реА рд╣реИ? @jerryfuyu0104
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрдИ рд╕реНрддрдВрднреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реВрдкрд┐рдВрдЧред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА multi.var=FALSE
, рдЬрдм рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ x
рд╕реЗ рдЕрдзрд┐рдХ рд▓реВрдк рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╣реЛрддрд╛ рд╣реИ: list(FUN(x[[1]]),FUN(x[[2]]))
) рд▓реЗрдХрд┐рди рд╕рднреА рдХреЙрд▓рдо FUN(x)
ред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдореИрдВ рдЙрд╕ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рджреВрд╕рд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдВрд╢рд┐рдХ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП "рдЖрдВрд╢рд┐рдХ" рддрд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?
@eliocamp рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ partial
рд╡рд┐рдВрдбреЛ рдХреНрдпрд╛ рд╣реИ?
@eliocamp "рдЖрдВрд╢рд┐рдХ" рддрд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЖрдк рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерди рд╣реИ, adaptive=TRUE
рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдзреЗ-рд╡рд┐рдВрдбреЛ рдмрд┐рдВрджреБ рдХреЗ рдмрдЬрд╛рдп рд╢реБрд░реБрдЖрдд рд╕реЗ рдЕрдВрдд рддрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, резрез рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп рдХреЗ рд▓рд┐рдП, рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рез рд╕реЗ рем рддрдХ рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдорд╛рдзреНрдп рд╣реЛрдЧрд╛ред рджреВрд╕рд░рд╛, рез рд╕реЗ ренрд╡реЗрдВ рддрдХ рдХрд╛ рдорд╛рдзреНрдп, рдЗрддреНрдпрд╛рджрд┐ред
@jangorecki рдУрд╣, рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛! рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдБрдЧрд╛ред
рд╕рд╣рдордд рд╣реВрдВ, рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрд▓реНрдХрд┐ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рднреА рдЖрдВрд╢рд┐рдХ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред adaptive=TRUE
рдПрдХ рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдФрд░ рд╣рд╛рдБ рд╣рдореЗрдВ рд░реЛрд▓рд┐рдВрдЧ рд░рд┐рдЧреНрд░реЗрд╢рди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрдИ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдирд╛ рдФрд░ рдЙрди рдкрд░ рд░реЛрд▓ рдХрд░рдирд╛, рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдирд╣реАрдВред
рдЗрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдорджрдж рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕реА ++ рдХреМрд╢рд▓ рдкреВрд░реА рддрд░рд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред :рдкрд╕реАрдирд╛: рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рд╢реМрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рд╣рдо рд╕реА ++ рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реА рдореЗрдВред рд╣рд╛рдВ рдпрд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред рдореИрдВрдиреЗ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдлреНрд░реЛрд▓рдореАрди рдкрд░ рдХрд┐рдпрд╛ рдерд╛ред
рдореИрдВ рдХреЛрдб рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЕрдм, рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП: рдлреНрд░реЛрд▓рдореАрди (.SD) рдХреЛ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдо рддреМрд░ рдкрд░, рдЕрдЧрд░ рдЗрдирдкреБрдЯ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рдЬреИрд╕рд╛ рд╣реИ, рддреЛ рдлреНрд░реЛрд▓* рдХреЛ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
data.table рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ "рд╕рдордп рдЬрд╛рдЧрд░реВрдХ" рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреИрдХреЗрдЬ tsibble
ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдкреИрдХреЗрдЬ dplyr
рдЖрд╕рдкрд╛рд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ data.table рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИрдВред
@ywhcuhk рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╛рдВрдЧ рд░рд╣рд╛ рдерд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрднреА рднреА рд╣рд▓реНрдХреЗ рдкреИрдХреЗрдЬ рд░реЛрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИред рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ, рдЗрд╕рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд▓рд╛рдЧреВ рдХрд░рдирд╛/рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╕ tstibble рдХреЗ рд░реАрдбрдореА рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ ...
рдЗрд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ "рдЯрд┐рдбреА рдЯреЗрдореНрдкреЛрд░рд▓ рдбреЗрдЯрд╛ рдлреНрд░реЗрдореНрд╕" рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЯреЗрдореНрдкреЛрд░рд▓ рдЬреЙрдЗрди рдХреА рдкреЗрд╢рдХрд╢ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП @jangorecki рдзрдиреНрдпрд╡рд╛рджред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрднрд░ рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рдЬрд┐рд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд┐рдкрдЯрддрд╛ рд╣реВрдВ, рдЙрд╕реЗ "рдкреИрдирд▓ рдбреЗрдЯрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЖрдИрдбреА рдФрд░ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕ рдбреЗрдЯрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдЬрд╛рдЧрд░реВрдХ" рд╣реИ, рддреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдЪрд╛рд▓рди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдордп-рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдВрдЪрд╛рд▓рди, рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬреЛ STATA рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдпрд╣ tsset
рдФрд░ xtset
рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╣реИ, рдЬреИрд╕реЗ рд▓реАрдб, рд▓реИрдЧ, рдлрд┐рд▓ рдЧреИрдк, рдЖрджрд┐ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдореЗрдВ "рдЗрдВрдбреЗрдХреНрд╕" рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдмреЗрд╢рдХ, рдпреЗ рдСрдкрд░реЗрд╢рди рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреИрд╕реЗ shift
рдФрд░ by
ред рдореИрдВрдиреЗ рдЕрднреА рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ data.table рдореЗрдВ index
рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдКрдкрд░ рдХреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдП ...
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@mattdowle рдкреАрдЖрд░ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд░рд╣рд╛ рд╣реИ
рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдЧрддрд┐ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЖрдЬрдХрд▓ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдХреБрдВрдЬреА/рд╕реВрдЪрдХрд╛рдВрдХ рдлреНрд░реЛрд▓рдорд┐рди/рдлреНрд░реЛрд▓рдореИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдк рдЪрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдк рдЪрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рд╣рдордиреЗ рдЕрднреА рддрдХ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ GForce рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рд╕рдордЭ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рд░реЛрд▓ * рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдЬрд╛рд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ рд▓реЗрдХрд┐рди рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИ (рдЧреИрд░-рд░реЛрд▓рд┐рдВрдЧ рдорд╛рдзреНрдп, рдпреЛрдЧ, рдЖрджрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд)ред
рдореИрдВрдиреЗ рдКрдкрд░ рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдбреЗрдЯрд╛.рдЯреЗрдмрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рднрд░рдиреЗ, рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреВрдЫрдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ред рдЕрдЧрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рддреЛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред