2017-02-19 49 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 

我想要計算使用y進行了中位數和E,其爲13.75

是否可以使用聚合來計算它? R中簡單的解決方案是什麼? 非常感謝您的幫助。

+1

你不需要'aggregate'如果你不想計算中位數爲每(子集)級別。只要做一個常規子集並計算中位數就像akrun所顯示的那樣。 –

回答

-1

我們可以在 'X' 用%in%filter值並計算 'Y' 的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「子集」解決方案很簡單 – 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