根据另一列的排名计算一列的总和

2024-02-20

我有一个数据集:

Security      %market value      return    Quintile*
1             0.07               100        3
2             0.10               88         2
3             0.08               78         1
4             0.12               59         1
5             0.20               106        4
6             0.04               94         3
7             0.05               111        5
8             0.10               83         2
9             0.06               97         3
10            0.03               90         3
11            0.15               119        5

实际数据集有超过 5,000 行,我想使用 R 创建 5 个五分位数,每个五分位数假设有 20% 的市场价值。此外,还必须按照回报的大小顺序对它们进行排名。也就是说,第一个五分位数应包含回报率最低的 20% 证券,第五个五分位数应包含回报率最高的 20% 证券。我想创建“五分位数”列,在不同的五分位数中可以有不同数量的证券,但总市场价值百分比应该相同。 我尝试了几种方法,而且我对 R 很陌生,所以请为我提供一些帮助。预先非常感谢您!

Samuel


您可以对数据进行排序,然后使用 findInterval (添加一个小增量以使用右括号):

raw_data <- raw_data[order(raw_data$return),]
raw_data$Q2 <- findInterval( cumsum(raw_data$marketvalue) , seq(0,1,length=5)+0.000001 , right = T )
raw_data
#   Security marketvalue return Quintile Q2
#4         4        0.12     59        1  1
#3         3        0.08     78        1  1
#8         8        0.10     83        2  2
#2         2        0.10     88        2  2
#10       10        0.03     90        3  3
#6         6        0.04     94        3  3
#9         9        0.06     97        3  3
#1         1        0.07    100        3  3
#5         5        0.20    106        4  4
#7         7        0.05    111        5  5
#11       11        0.15    119        5  5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据另一列的排名计算一列的总和 的相关文章

随机推荐