# [R] Sorting values within a raster

David Winsemius dwinsemius at comcast.net
Thu Apr 21 22:26:54 CEST 2011

```On Apr 21, 2011, at 3:23 PM, Sara Maxwell wrote:

> I am working with a raster and want to take values assigned to each
> cell and sort them from largest to smallest, then cummulatively sum
> them together (in order from largest to smallest).  I'll then be
> coding the individual cells such that the top 10% of the largest
> cell values can be visualize with one color, the next 10% with
> another and so on.
>
> I have tried a number of schemes but am having trouble figuring out
> how to chose the maximum value, code it and re-search the raster for
> the next highest value without replacement.  I am assuming this
> requires a loop, unless there is a function that will do this
> automatically.

?quantile

>
> Here is a sample dataset:
>
> library(raster)
> r <- raster(ncol=10, nrow=10)
> values(r) <- runif(ncell(r))

> quantile(values(r), prob=seq(0,1,by=0.1))
0%         10%         20%         30%         40%
0.004888148 0.106378528 0.217009097 0.307201289 0.364990984
50%         60%         70%         80%         90%
0.512523817 0.593382875 0.667916094 0.722919876 0.835839832
100%
0.996683575

You will also need findInterval()

If you want to create a factor that will assign your colors. perhaps
this could be used to index a suitable color vector:

fac <- findInterval(values(r), quantile(values(r),
prob=seq(0,1,by=0.1)) )
> fac
[1]  6 10  1 10  7  7  8 10  2  9  9  1  6  2  9  1  9  4  2  2
[21]  3  4  8  9  7  1  9  2 10  5  4  9  8  1  8 10  1 11  3  5
[41]  5  6  6  5  6  7  4  7  5  3  8  6  3  4 10  4  7  7  8  9
[61] 10  4  1  8  8  8  3  7  5  1  9  5  2  7  2 10  3  8  4  9
[81]  6  6  2  6 10  5  5  4  3  6  2  2  1  3  3  3  4  7  1  5

David Winsemius, MD
West Hartford, CT

```