以前からの素晴らしいアドバイスに従って、2 番目の R 関数を作成し、同様のロジックを使用しています。しかし、私はもう少し自動化しようとしており、自分の利益のために賢くなりすぎている可能性があります。
注文数に基づいてクライアントを五分位に分割したいと考えています。これを行うための私のコードは次のとおりです。
# sample data
clientID <- round(runif(200,min=2000, max=3000),0)
orders <- round(runif(200,min=1, max=50),0)
df <- df <- data.frame(cbind(clientID,orders))
#function to break them into quintiles
ApplyQuintiles <- function(x) {
cut(x, breaks=c(quantile(df$orders, probs = seq(0, 1, by = 0.20))),
labels=c("0-20","20-40","40-60","60-80","80-100"))
}
#Add the quintile to the dataframe
df$Quintile <- sapply(df$orders, ApplyQuintiles)
table(df$Quintile)
0-20 20-40 40-60 60-80 80-100
40 39 44 38 36
サンプル データでは、200 の観測を作成しましたが、197 のみが を介してリストされていることがわかりますtable
。残った3つはNA
現在、クインタイルの「NA」を持つ clientID がいくつかあります。それらが最小のブレーク (この場合は 1) にあった場合、それらはカット関数に含まれていないようです。
cut
すべての観察結果 を含める方法はありますか?