這裏是這樣的問題:如何計算一個變量的平均值,以另一個變量的分位數分割爲條件?
- 條件基於時間分割一個變量(X)轉換成十分位數,即10位數 上X的位數和時間
這裏是假的數據:
library(data.table)
set.seed(1)
dat = as.data.table(data.frame(X = round(abs(rnorm(100))*100,2),
Time = rep(seq(as.Date("2016-01-01"),as.Date("2016-04-01"),"month"),25),
Y = round(rnorm(100),2)))
這裏是位數分裂:
dat[, ':=' (Quantile = dplyr::ntile(X,10)),by = Time][]
兩個時間分組值條件和位數似乎很清楚
dat[,`:=` (MeanY = mean(Y)),by = c("Time","Quantile")]
或者
dat[, MeanY = mean(Y) ,by = c("Time","Quantile")]
的問題是如何能夠在所有X頂尖獲得任意均值Y,條件,如10,9,8或1,2,3分位數
任何幫助很大的讚賞!
謝謝!我的錯!我希望高效地減少Top3減去Bottom3 – user1730977
對於第二個,只使用data.table,有'dat [CJ(Time = Time,q = 1:10,unique = TRUE),on =。(時間,分位數<= q),平均值(Y),by = .EACHI]' – Frank