【发布时间】:2017-03-03 01:15:33
【问题描述】:
我在制作十分位投资组合时遇到了麻烦。 This is my dataset: X 行代表 1 个会计期间,列代表公司。
我试图获取每个时期的每个分位数。
Decile_X <- data.frame(matrix(nrow = 11, ncol = 56))
for(i in 1:56){
Decile_X[,i]<-as.numeric(quantile(X[i,], prob = seq(0, 1,length = 11),
type = 5, na.rm=T))}
产生这个 Result of quantiles in each periods, column represents periods
通过这个结果,我试图在每个时期的 X 数据集中获得 0%~10%、10%~20% ... 90%~100% 之间的平均值。
Df <- data.frame(matrix(nrow = 10, ncol = 56))
for(i in 1:nrow(TaxExpense)){
for(j in 1:10){
Df[j,i] <- mean(rowMeans(X[i, which(!is.na(Decile_X[i,]) &
X[i,]>Decile_X[j,i] & X[i,]<=Decile_X[j+1,i])], na.rm=T))
但问题是因为在 Decile_X 的某些时段中,在 40%~50%、50%~60%、60%~70% 中显示 0.000000000,所以我无法准确分割。
这个问题有什么解决办法吗? 还是我的方法制作十分位投资组合效率很低?
我是 R 新手,并试图详细解释。 请帮帮我。
【问题讨论】:
-
您可以使用 dplyr 拆分为十分位数:mydata %>% mutate(quantile = ntile(x1, 10))。 x1 是您要用于拆分为十分位数的列。
标签: r