2016-10-07 41 views
0

我的工作我的方式,通過R for Data Science Manual,目前正在完成第3章。我試圖找到一種方法來產生一個情節結合不同類型的自動和手動變速器的到新的數據幀兩個地塊,而不是我有什麼目前:R:結合MPG轉列到含有兩列

# Install necessary packages 
install.packages("tidyverse") 
library(tidyverse) 

# Create the plot 
fuelbytrans <- ggplot(data = mpg) + 
    geom_jitter(
    mapping = aes(x = displ, y = hwy, colour = fl), 
    size = 0.75) + 
    # Change labels for title and x and y axes 
    labs(
    title = "Drivstofforbruk iht. datasettet «mpg» fordelt på girkasse og motorvolum", 
    x = "Motorvolum", 
    y = "Am. mil per gallon") 

# Run it 
fuelbytrans 



# Set colours and labels for fuel legend and position it on the bottom 
# e (etanol), d (diesel), r (regular [bensin, lavoktan]), p (premium [bensin, høyoktan]), 
# c (CNG) 
cols <- c(#kilde: http://colorbrewer2.org/#type=diverging&scheme=PRGn&n=5 
    "c" = "yellow", 
    "d" = "red", 
    "e" = "black", 
    "p" = "blue", 
    "r" = "darkgreen" 
) 
labels_fuel <- fuelbytrans + 
scale_colour_manual(
    name = "Drivstoff", 
    values = cols, 
    breaks = c("c", "d", "e", "p", "r"), 
    labels = c("CNG", 
       "diesel", 
       "etanol", 
       "bensin,\nhøyoktan", 
       "bensin,\nlavoktan")) + 
    theme(legend.position = "bottom", 
     legend.background = element_rect(
      fill = "gray90", 
      size = 2, 
      linetype = "dotted" 
     )) 

# Run it 
labels_fuel 



# Wrap by transmission type 
labels_fuel + facet_wrap(~ trans, nrow = 1) 

正如你所看到的,我所得到的是8列自動變速器,以及兩個用於手冊;我想要的只是兩列,一列用於自動,另一列用於手動,連接圖。我目前不知道如何做到這一點,並希望得到所有幫助。

如果缺少任何信息,應該已經有不同的寫法,或原本可以改善,請告知。

我正在RStudio 0.99.902。我很新的R.

回答

1

你在你的數據有2種以上類型的傳輸:

table(mpg$trans) 

# auto(av) auto(l3) auto(l4) auto(l5) auto(l6) 
#  5   2   83   39   6 
# auto(s4) auto(s5) auto(s6) manual(m5) manual(m6) 
#  3   3   16   58   19 

你需要將它們分組分爲2組第一,這裏是一個選項:

mpg = mpg %>% 
    mutate(trans2 = if_else(grepl("auto", trans), "auto", "manual")) 

table(mpg$trans2) 

# auto manual 
# 157  77 

然後,使用新trans2變量磨製(您需要重新運行的情節)。

兩個更多的評論:

  1. 如果您想了解更多有關的R功能,R.調用?function_name這將帶來幫助頁該功能。它通常包含可以從R運行以查看它在實際中的作用的示例。 (加上這裏我們使用grepl,所以它也將是術語「正則表達式」有用的谷歌,如果你不熟悉它們)。

  2. 既然你正在閱讀R4DS,你需要熟悉與dplyrtidyr使用的「管道運營商」等tidyverse包宜早不宜遲。它可以以易於閱讀的方式將多個函數調用鏈接在一起。谷歌它或看看here。呼叫也可以不用管這樣寫的:

    mpg = mutate(mpg, trans2 = if_else(grepl("auto", trans), "auto", "manual")) 
    

在這種特定情況下,管道運營商實際上是沒有多大用處的。我很習慣,我自動去做。

+0

你能解釋發生變異函數是如何工作的,尤其是以下幾點: •什麼%s的周邊>嗎? •grepl做什麼? 非常感謝! –

+0

哦,它就像一個魅力!再次,謝謝你! –

+0

@CannedMan查看我更新的答案。另外,如果這回答您的問題,那麼「接受它」(通過單擊複選標記)是一種很好的做法,以便其他問題的谷歌人員可以看到它已被回答。 – jakub