Używanie CUT i Quartile do generowania przerw w funkcji R

Następującykilka świetnych rad od wcześniejszych, Piszę teraz moją drugą funkcję R i stosuję podobną logikę. Jednak staram się zautomatyzować trochę więcej i może być zbyt mądry dla mojego dobra.

Chcę podzielić klientów na kwintyle na podstawie liczby zamówień. Oto mój kod do zrobienia:

# 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

Zobaczysz tutaj, że w moich przykładowych danych stworzyłem 200 obserwacji, ale tylko 197 jest wymienionych przeztable. Trzy pozostałe sąNA

Teraz są pewne identyfikatory klientów, które mają „NA” dla kwintyla. Wygląda na to, że jeśli znajdowały się na najniższym poziomie, w tym przypadku 1, to nie zostały uwzględnione w funkcji cięcia.

Czy istnieje sposób na zrobienie tegocut włącznie ze wszystkimi obserwacjami?

questionAnswers(4)

yourAnswerToTheQuestion