2017-12-12 3 views
1

Ich habe einen Datenrahmen in etwa so:Berechnung Quantile für Teilmengen von Daten

set.seed(2)  
df<- data.frame(region= c(rep(1,4), rep(2,4)),scale=sample(-1:4,8,replace=TRUE)) 

ich gruppieren mag die Daten von region und dann quantiles für diese Teilmenge berechnen und die Ergebnisse für das 25% -Quantil setzen, 75 % Quantil in separaten Spalten.

quantile(df[1:4,2])[2] #region 1 25% quantile 
quantile(df[1:4,2])[4] #region 1 75% quantile 
quantile(df[5:8,2])[2] #region 2 25% quantile 
quantile(df[5:8,2])[4] #region 2 75% quantile 

Die erwartete Ausgabe wäre:

output<- data.frame(region= c(1,2), Q1= c(0,2.75), Q3= c(2.25, 4)) 

ich versucht habe:

out <- 
bos %>% 
group_by(region)%>% 
summarise(mean=mean(res_vec), sd= sd(res_vec), 
median=median(res_vec), mode= mode(res_vec), 
     quantile1= quantile(scale, probs= 0.25), 
     quantile2= quantile(scale, probs= 0.75)) 

AND 

quantiles<-aggregate(x = bos, by = list(bos$scale), fun = quantiles) 

Antwort

2

Das, was Sie suchen?

library(dplyr) 

df %>% 
    group_by(region) %>% 
    summarize(q1 = quantile(scale, 0.25), 
      q3 = quantile(scale, 0.75)) 

# A tibble: 2 x 3 
    region q1 q3 
    <dbl> <dbl> <dbl> 
1  1 0.00 2.25 
2  2 2.75 4.00 
+1

Vielen Dank. Während ich diese Lösung oben hatte, haben Sie bestätigt, dass ich etwas falsch mit meinem Datenrahmen haben muss und sicher genug, dass das Problem war! Die Variable, die ich mit 'scale()' skaliert hat, gibt Werte in Form einer Matrix statt eines Vektors aus, was zu Problemen führte. Danke, dass Sie mir geholfen haben. – Danielle

Verwandte Themen