Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按R中的分组计算内的十分位秩_R - Fatal编程技术网

按R中的分组计算内的十分位秩

按R中的分组计算内的十分位秩,r,R,我有一系列财务公司回报与其他特点。数据标题为: 主管(公司ReturnsNameScore) 我可以计算整个期间的市值十分位数排名(1到10),这可以在“marketCapDecile”变量中看到。我使用“StatMeasures”包中的“decile”函数作为获取十分位秩的简单方法,但当我尝试使用该函数按日期获取十分位秩时,出现以下错误: 截止日期(companyReturnsNameScore,companyReturnsNameScore$日期,十分位数(companyReturnsNa

我有一系列财务公司回报与其他特点。数据标题为:

主管(公司ReturnsNameScore)


我可以计算整个期间的市值十分位数排名(1到10),这可以在“marketCapDecile”变量中看到。我使用“StatMeasures”包中的“decile”函数作为获取十分位秩的简单方法,但当我尝试使用该函数按日期获取十分位秩时,出现以下错误:

截止日期(companyReturnsNameScore,companyReturnsNameScore$日期,十分位数(companyReturnsNameScore$市值)) FUN(X[[i]],…)中出错:找不到函数“FUN”

函数“decile”存在,因为我可以在“by…”操作之外无错误地运行,但当我将它放在里面时,我得到了错误

如何使用“by”函数按日期生成“marketCap”的十分位等级。我不愿意使用“分位数”功能,但当我尝试使用“分位数”或其他工具时,我似乎无法生成“分位数”排名


感谢您的帮助。

一种方法是将
分位数
findInterval
相结合
quantile
与probs=1:10/10参数一起,将计算每个十分位的值,这些值将被输入到构成类别的
findInterval

# set up dummy vector for example
temp <- 1:100
findInterval(temp, quantile(temp, probs=1:10/10), left.open=T)
[1] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
[30] 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5
[59] 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8
[88] 8 8 8 9 9 9 9 9 9 9 9 9 9
#例如设置虚拟向量

temp一种方法是将
分位数
findInterval
相结合
quantile
与probs=1:10/10参数一起,将计算每个十分位的值,这些值将被输入到构成类别的
findInterval

# set up dummy vector for example
temp <- 1:100
findInterval(temp, quantile(temp, probs=1:10/10), left.open=T)
[1] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
[30] 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5
[59] 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8
[88] 8 8 8 9 9 9 9 9 9 9 9 9 9
#例如设置虚拟向量

如果输入因子的长度小于2,temp
decile
将始终抛出警告。我更新了您的测试数据框,使其具有多个日期

   PERMNO     date TICKER     PRC   VOL       RET SHROUT        mc
1:  85814 19980831   CTAC  6.1875 27989 -0.489691   6431  39791.81
2:  85814 20021031   CTAC 27.5700 97498  1.177725  11388 313967.16
3:  85814 19980831   CTAC 14.7500  5658 -0.180556   6275  92556.25
4:  85814 20021031   CTAC  9.0300 20192 -0.097000  11382 102779.46
5:  85814 20021031   CTAC 12.6600 15474  0.401993   6400 152958.12
我会使用
库(purrr);库(dplyr)
而不是本场景中的
by
,因为
by
需要在整个数据帧上工作的函数

df %>% split(.$date) %>% map_df(~ mutate(., date_decile = decile(mc)))
  PERMNO     date TICKER     PRC   VOL       RET SHROUT        mc date_decile
1  85814 19980831   CTAC  6.1875 27989 -0.489691   6431  39791.81           1
2  85814 19980831   CTAC 14.7500  5658 -0.180556   6275  92556.25          10
3  85814 20021031   CTAC 27.5700 97498  1.177725  11388 313967.16          10
4  85814 20021031   CTAC  9.0300 20192 -0.097000  11382 102779.46           1
5  85814 20021031   CTAC 12.6600 15474  0.401993   6400 152958.12           5

如果输入因子的长度小于2,
decile
将始终抛出警告。我更新了您的测试数据框,使其具有多个日期

   PERMNO     date TICKER     PRC   VOL       RET SHROUT        mc
1:  85814 19980831   CTAC  6.1875 27989 -0.489691   6431  39791.81
2:  85814 20021031   CTAC 27.5700 97498  1.177725  11388 313967.16
3:  85814 19980831   CTAC 14.7500  5658 -0.180556   6275  92556.25
4:  85814 20021031   CTAC  9.0300 20192 -0.097000  11382 102779.46
5:  85814 20021031   CTAC 12.6600 15474  0.401993   6400 152958.12
我会使用
库(purrr);库(dplyr)
而不是本场景中的
by
,因为
by
需要在整个数据帧上工作的函数

df %>% split(.$date) %>% map_df(~ mutate(., date_decile = decile(mc)))
  PERMNO     date TICKER     PRC   VOL       RET SHROUT        mc date_decile
1  85814 19980831   CTAC  6.1875 27989 -0.489691   6431  39791.81           1
2  85814 19980831   CTAC 14.7500  5658 -0.180556   6275  92556.25          10
3  85814 20021031   CTAC 27.5700 97498  1.177725  11388 313967.16          10
4  85814 20021031   CTAC  9.0300 20192 -0.097000  11382 102779.46           1
5  85814 20021031   CTAC 12.6600 15474  0.401993   6400 152958.12           5

啊。。。我试图在漂亮的列中获取数据,但由于某种原因,没有成功。对不起,伙计们……呃。。。我试图在漂亮的列中获取数据,但由于某种原因,没有成功。抱歉,伙计们……谢谢@nathan day。事实上,我想出了如何在没有错误的情况下运行十分位。我只需要在没有参数的情况下调用函数:现在的问题是捕获那些十分位秩>companyReturnsNameScore$marketcapdecilerank您可以将原始(大)数据帧配对,使其每个日期只有一行,或者你可以合并成十分位,这样大数据框在特定日期的每一次观察(行)中都会有相同的十分位值。谢谢@nathan day。事实上,我想出了如何在没有错误的情况下运行十分位。我只需要在没有参数的情况下调用函数:现在的问题是捕获那些十分位秩>companyReturnsNameScore$marketcapdecilerank您可以将原始(大)数据帧配对,使其每个日期只有一行,或者你可以合并成十分位,这样大数据框对于特定日期的每个观察值(行)都具有相同的十分位值。