我有一个数据集:
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(使用前将#替换为@)