pApaAPPApapapa pApaAPPApapapa - 2 months ago 10
R Question

Nested 'ifelse'-statement for quantiles

I am attempting to assign a number from 1 through 10 to a series of vectors based on what quantile they're in in a dataframe.

So far I have tried

quants <- quantile(Data$Avg, c(.1, .2, .3, .4, .5, .6, .7, .8, .9))

Data$quant <- for ( i in nrow(Data) ) {
ifelse(Data$Avg [i] < quants[1], Data$quant[1] = 1 ,
ifelse(Data$Avg [i] > quants[1] & Data$Avg[i] < quants[2], Data$quant[1] = 2, Data$quant = 3
))}


I get the following mistake:

enter image description here

Can anyone spot the mistake I am making here?

Answer

You might be better off using cut rather than a loop:

Data = data.frame(Avg = runif(100))
quantpoints <- seq(0.1, 0.9, 0.1)
quants <- quantile(Data$Avg, quantpoints)

cutpoints <- c(-Inf, quants, Inf)

cut(Data$Avg, breaks = cutpoints, labels = seq(1, length(cutpoints) - 1))
Comments