2017-04-04 29 views
0

有問題的數據集是鑽石(在dplyr中)。我正試圖通過使用facet_wrap剪切來突破價格的直方圖。我也希望每個地塊都有中線。 這就是我所做的 -使用ggplot繪製每個組的平均值facet_wrap

by_cut <- group_by(diamonds, cut) 

med <- by_cut %>% 
    summarise(medn = median(price)) 

diam <- diamonds %>% 
    mutate(med_cut = ifelse(cut == med$cut[1], med$medn[1], 
         ifelse(cut == med$cut[2], med$medn[2], 
          ifelse(cut == med$cut[3], med$medn[3], 
            ifelse(cut == med$cut[4], med$medn[4], med$medn[5]))))) 

diam %>% 
    ggplot(aes(price)) + 
    geom_histogram(binwidth = 100) + 
    facet_wrap(~ cut, scales = "free_y") + 
    geom_vline(aes(xintercept= med_cut), colour='red') 

,並獲得所需的圖(如下圖,這是我想要的..) - facet_wrap_median

不過,我敢肯定這是不是理想的方式實現結果,因此我想知道什麼是實現最終情節的最佳方式?

基於@yeedle評論

這裏比以前更好的嘗試:

diam <- diamonds %>% 
    group_by(cut) %>% 
    mutate(medn = median(as.numeric(price))) 

diam %>% 
    ggplot(aes(price)) + 
    geom_histogram(binwidth = 100) + 
    facet_wrap(~ cut, scales = "free_y") + 
    geom_vline(aes(xintercept= medn, group= cut), colour='red') 

我們能否進一步改善?

回答

2
diamonds %>% 
    group_by(cut) %>% 
    mutate(med_price = median(as.numeric(price))) %>% 
    ggplot(aes(price)) + 
    geom_histogram(binwidth = 100) + 
    geom_vline(aes(xintercept= med_price), colour='red') + 
    facet_wrap(~ cut, scales = "free_y") 
+0

謝謝,它解決了我有關數字向量錯誤的小問題。由於錯誤我走了很長的路線.... –

+0

感謝您幫助我學習R及其種族... –