2017-02-19 4 views
-5

У меня есть следующий кадр данных:Как рассчитать медиану для двух групп в кадре данных с помощью aggergate

x y 
A 13.5 
C 12 
D 13 
E 11 
B 13 
E 12.4 
A 14 
A 17.1 
F 15 
F 11 
F 12 
E 14.4 

Я хочу, чтобы вычислить медиану для А и Е, используя у, который является 13,75

Можно ли вычислить его с помощью агрегата? Какое простое решение для этого в R? Большое спасибо за вашу помощь.

+1

Вам не нужно 'aggregate', если вы не хотите, чтобы вычислить медиану для каждого (подмножества). Просто сделайте регулярное подмножество и вычислите медианную форму, как показано на akrun. –

ответ

-1

Мы можем filter значения в 'х', используя %in% и вычислить median из 'у'

library(tidyverse) 
df1 %>% 
    filter(x %in% c("A", "E")) %>% 
    summarise(y = median(y)) 

Если нам нужно вычислить его группой, то

df1 %>% 
    filter(x %in% c("A", "E")) %>% 
    group_by(x) %>% 
    summarise(y = median(y)) 

Или base verse

median(subset(df1, x %in% c("A", "E"), select = y)[,1]) 
#[1] 13.75 

Это можно сделать компактным

median(df1$y[df1$x %in% c("A", "E")]) 
+1

Возможно ли иметь простое решение. Thansk – user1309

+0

@ user1309 Решение 'subset' просто – akrun

+0

вы предоставили много скриптов. N – user1309

1

здесь простое решение с использованием подмножества данных:

df <- data.frame(x = c("A", "C", "D", "E", "B", "E", "A", "A", rep("F", 3), "E"), 
      y = c(13.5, 12, 13, 11, 13, 12.4, 14, 17.1, 15, 11, 12, 14.4)) 

median_A_and_E <- median(df$y[df$x == "A" | df$x == "E"]) 

> median_A_and_E 
[1] 13.75 
Смежные вопросы