Verwenden von CUT und Quartile, um Unterbrechungen in der R-Funktion zu erzeugen

Im Anschlusseinige gute Ratschläge von vorIch schreibe jetzt meine 2. R-Funktion und benutze eine ähnliche Logik. Ich versuche jedoch, ein bisschen mehr zu automatisieren und werde zu schlau für mein eigenes Wohl.

Ich möchte die Kunden basierend auf der Anzahl der Bestellungen in Quintile aufteilen. Hier ist mein Code, um dies zu tun:

# 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

Sie werden sehen, dass ich in meinen Beispieldaten 200 Beobachtungen erstellt habe, aber nur 197 über aufgelistet sindtable. Die 3 weggelassenen sindNA

Nun gibt es einige Client-IDs, die eine 'NA' für Quintil haben. Anscheinend waren sie in der niedrigsten Pause, in diesem Fall 1, nicht in der Schnittfunktion enthalten.

Gibt es einen Weg zu machencut Einschließlich aller Beobachtungen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage