我在R:
中有这样的数据集SchoolName Year Grade Other_cols_not_of_interest
School1 1998 152
School2 1998 156
School3 1999 158
对于1998 - 2011年的每一年,我都想计算可用学校数据的十分位数。 (一年内,可能有40所学校的数据,而另外20所学校的数据。)
这是我想看到的输出:
Decile Year Value
D1 1998 100
D2 1998 110
D3 1998 125
[...]
D10 1998 170
D1 1999 105
[...]
答案 0 :(得分:1)
schoolDat <- data.frame(
'SchoolName' = rep(paste('School',1:10), each=10),
'Year' = rep(1998:2007, 10),
'Grade' = rpois(100, 100)
)
tapply(schoolDat$Grade, schoolDat$Year, quantile, probs=0:10/10)
答案 1 :(得分:0)
以下是使用plyr
包的版本,该包将在包含3列的数据框中返回结果。
dat <- data.frame('SchoolName' = rep(paste('School', 1:10), each=10),
'Year' = rep(1998:2007, 10),
'Grade' = rpois(100, 100))
require(plyr)
d <- ddply(dat, .(Year), summarise, decile_grade=quantile(Grade, 0:10/10),
decile_val=0:10/10)
head(d)
> Year decile_grade decile_val
1 1998 81.0 0.0
2 1998 90.0 0.1
3 1998 93.4 0.2
4 1998 100.3 0.3
5 1998 104.8 0.4
6 1998 106.5 0.5