我有一个矩阵,其列是股票回报,其行是日期,如下所示:
ES1.Index VG1.Index TY1.Comdty RX1.Comdty GC1.Comdty
1999-01-05 0.009828476 0.012405717 -0.003058466 -0.0003480884 -0.001723317
1999-01-06 0.021310816 0.027030061 0.001883240 0.0017392317 0.002425398
1999-01-07 -0.001952962 -0.016130850 -0.002826191 -0.0011591516 0.013425435
1999-01-08 0.007989946 -0.004071275 -0.005913678 0.0016224363 -0.001363540
我想要一个函数返回一个矩阵,该矩阵具有相同的列名和行名,根据每个行向量中的每个观察是否属于两个给定分位数内的某个组,填充1和0 .
例如,我可能想要将每个行向量分成3组,并且对于属于第二组的所有观察值和其他地方的0都有1 . 结果看起来像:
ES1.Index VG1.Index TY1.Comdty RX1.Comdty GC1.Comdty
1999-01-05 0 0 1 1 0
1999-01-06 1 0 0 1 0
1999-01-07 0 1 0 0 1
1999-01-08 0 0 1 0 1
(我的例子中的1和0只是一个视觉结果,数字不准确)
哪个是最简单的方法?
2 回答
采取找到分位数的中间步骤并对其进行测试是没有必要的 . 只有每个向量的序数属性很重要 .
我们可以使用带有
MARGIN=1
的apply
来循环遍历行cut
每个row
向量与quantile
指定的breaks
,转置输出以获得输出 .