L'utilisation de COUPER et le Quartile de générer des ruptures dans la fonction R

Suivantes quelques bons conseils avant de partir, je suis en train d'écrire mon 2ème de la fonction R et à l'aide d'une logique similaire. Cependant, je suis en train d'automatiser un peu plus et peut-être trop intelligent pour mon propre bien.

J'ai envie de casser les clients en quintiles en fonction du nombre de commandes. Voici mon code pour le faire:

# 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

Vous verrez ici que dans mon échantillon de données, j'ai créé 200 observations, mais seulement 197 sont répertoriés via table. Le 3 gauche sont NA

Maintenant, il y a quelques clientIDs qui ont " NA " pour quintile. Il semble que si ils étaient au plus bas pause, dans ce cas, de 1, alors qu'ils n'ont pas été inclus dans la fonction de couper.

Est-il un moyen de faire cut inclusive de toutes les observations?

Oui, vous devez spécifier include.lowest=TRUE comme un argument de cut(). Voir ?cut

OriginalL'auteur mikebmassey | 2012-07-30