1

ベクトルの各行の十分位数を計算する関数を作成しました。これは、予測モデルの有効性を評価するためのグラフィックを作成する意図で行っています。これを行うにはもっと簡単な方法が必要ですが、しばらくの間、それを理解できませんでした。入れ子になった ifelse() ステートメントをあまり使わずに、この方法でベクトルをスコアリングする方法を知っている人はいますか? 結果をコピーするための関数といくつかのコードを含めました。

# function
decile <- function(x){
  deciles <- vector(length=10)
  for (i in seq(0.1,1,.1)){
    deciles[i*10] <- quantile(x, i)
  }
  return (ifelse(x<deciles[1], 1,
         ifelse(x<deciles[2], 2,
                ifelse(x<deciles[3], 3,
                       ifelse(x<deciles[4], 4,
                              ifelse(x<deciles[5], 5,
                                     ifelse(x<deciles[6], 6,
                                            ifelse(x<deciles[7], 7,
                                                  ifelse(x<deciles[8], 8,
                                                         ifelse(x<deciles[9], 9, 10))))))))))
}

# check functionality
test.df <- data.frame(a = 1:10, b = rnorm(10, 0, 1))

test.df$deciles <- decile(test.df$b)

test.df

# order data frame
test.df[with(test.df, order(b)),]
4

2 に答える 2

5

あなたが使用することができquantileますfindInterval

# find the decile locations 
decLocations <- quantile(test.df$b, probs = seq(0.1,0.9,by=0.1))
# use findInterval with -Inf and Inf as upper and lower bounds
findInterval(test.df$b,c(-Inf,decLocations, Inf))
于 2013-05-07T02:35:11.727 に答える