如何计算数据框中多列的十分位数?

时间:2015-08-14 07:23:48

标签: r

我有一个包含1465个观测值和1074个变量的数据帧。每列是一个日期,每一行都是不同的股票代码。我需要为每个日期排序代码。

到目前为止,我一直坚持甚至只对数据集中的一列进行排名。在搜索互联网后,大多数消息来源似乎建议使用cut(X, quantile(X,(0:10)/10, include.lowest=TRUE。我试过了:

DecRanking <- Volume 
DecRanking <- as.data.frame(DecRanking)
DecRanking2 <- NULL

DecRanking2 <- cut(DecRanking[,1], quantile(DecRanking[,1],(0:10)/10),include.lowest=TRUE)
DecRanking2 <- cut(DecRanking$X1.6.1995, quantile(DecRanking$X1.6.1995,(0:10)/10),include.lowest=TRUE)

这会给出错误:'breaks' are not unique。在unique()中包含五分位函数时,它会显示一个完全错误的输出:

> head(DecRanking2)
[1] (1e+03,1.93e+04] [0,1e+03]        [0,1e+03]        (1e+03,1.93e+04]      [0,1e+03]        (1e+03,1.93e+04]
Levels: [0,1e+03] (1e+03,1.93e+04] (1.93e+04,4.33e+07]

如何解决此问题以及如何实现所有列的计算?

编辑:

 > head(DecRanking)
  X1.6.1995 X1.13.1995 X1.20.1995 X1.27.1995 X2.3.1995 X2.10.1995 X2.17.1995 X2.24.1995 X3.3.1995 X3.10.1995 X3.17.1995
1      4300          0          0       3300      9900        200        200        400      3100          0        700
2         0          0          0          0         0          0          0          0         0          0          0
3         0          0          0          0         0          0          0          0         0          0          0
4     13700       4700      39400       2400     37645      51486      10000      41650       400      12007      22500
5         0          0          0          0         0          0          0          0         0          0          0
6     10300       6500          0       2500      4800       2500          0      15700        20          0          0  

这只是数据的摘录。因为害怕说明显而易见 - 数据显然有1,465行和1074列

0 个答案:

没有答案