Vishnu Raj
Vishnu Raj

Reputation: 1

Percentile for multiple groups of values in R

I'm using R to do my data analysis. I'm looking for the code to achieve the below mentioned output.

I need a single piece of code to do this as I have over 500 groups & 24 months in my actual data. The below sample has only 2 groups & 2 months.

This is a sample of my data.

Date    Group   Value
1-Jan-16    A   10
2-Jan-16    A   12
3-Jan-16    A   17
4-Jan-16    A   20
5-Jan-16    A   12
5-Jan-16    B   56
1-Jan-16    B   78
15-Jan-16   B   97
20-Jan-16   B   77
21-Jan-16   B   86
2-Feb-16    A   91
2-Feb-16    A   44
3-Feb-16    A   93
4-Feb-16    A   87
5-Feb-16    A   52
5-Feb-16    B   68
1-Feb-16    B   45
15-Feb-16   B   100
20-Feb-16   B   81
21-Feb-16   B   74

And this is the output I'm looking for.

Month   Year    Group   Minimum Value   5th Percentile  10th Percentile 50th Percentile 90th Percentile Max Value
Jan 2016    A                       
Jan 2016    B                       
Feb 2016    A                       
Feb 2016    B       

Upvotes: 0

Views: 2074

Answers (1)

Aramis7d
Aramis7d

Reputation: 2496

considering dft as your input, you can try:

library(dplyr)
dft %>% 
  mutate(Date = as.Date(Date, format = "%d-%b-%y")) %>%
  mutate(mon = month(Date),
         yr = year(Date)) %>%
  group_by(mon,yr,Group) %>%
  mutate(minimum = min(Value),
         maximum = max(Value),
         q95 = quantile(Value, 0.95)) %>%
  select(minimum, maximum, q95) %>%
  unique()

which gives:

    mon    yr Group minimum maximum   q95
  <int> <int> <chr>   <int>   <int> <dbl>
1     1  2016     A      10      20  19.4
2     1  2016     B      56      97  94.8
3     2  2016     A      44      93  92.6
4     2  2016     B      45     100  96.2

and add more variables as per your need.

Upvotes: 1

Related Questions