pApaAPPApapapa - 9 months ago 66

R Question

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:

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))
```

Source (Stackoverflow)