1. 請檢視 ‘diamonds’ 資料,然後指出資料的英文名稱、data type、所有變量的英文名稱及簡單說明

使用 F1 按鍵可得到 ‘diamonds’ 資料的相關資訊如下:

  • Prices of over 50,000 round cut diamonds Description

  • A dataset containing the prices and other attributes of almost 54,000 diamonds. The variables are as follows:

  • Format: A data frame with 53940 rows and 10 variables:


  1. price: price in US dollars ($326–$18,823)

  2. carat: weight of the diamond (0.2–5.01)

  3. cut: quality of the cut (Fair, Good, Very Good, Premium, Ideal)

  4. color: diamond colour, from D (best) to J (worst)

  5. clarity: a measurement of how clear the diamond is (I1 (worst), SI2, SI1, VS2, VS1, VVS2, VVS1, IF (best))

  6. x: length in mm (0–10.74)

  7. y: width in mm (0–58.9)

  8. z: depth in mm (0–31.8)

  9. depth: total depth percentage = z / mean(x, y) = 2 * z / (x + y) (43–79)

  10. table: width of top of diamond relative to widest point (43–95)


2. 請列舉 ‘diamonds’ 資料中各變量的基本統計量,然後指出那些變量是 factor

diamonds |> summary() 
     carat               cut        color        clarity          depth      
 Min.   :0.2000   Fair     : 1610   D: 6775   SI1    :13065   Min.   :43.00  
 1st Qu.:0.4000   Good     : 4906   E: 9797   VS2    :12258   1st Qu.:61.00  
 Median :0.7000   Very Good:12082   F: 9542   SI2    : 9194   Median :61.80  
 Mean   :0.7979   Premium  :13791   G:11292   VS1    : 8171   Mean   :61.75  
 3rd Qu.:1.0400   Ideal    :21551   H: 8304   VVS2   : 5066   3rd Qu.:62.50  
 Max.   :5.0100                     I: 5422   VVS1   : 3655   Max.   :79.00  
                                    J: 2808   (Other): 2531                  
     table           price             x                y         
 Min.   :43.00   Min.   :  326   Min.   : 0.000   Min.   : 0.000  
 1st Qu.:56.00   1st Qu.:  950   1st Qu.: 4.710   1st Qu.: 4.720  
 Median :57.00   Median : 2401   Median : 5.700   Median : 5.710  
 Mean   :57.46   Mean   : 3933   Mean   : 5.731   Mean   : 5.735  
 3rd Qu.:59.00   3rd Qu.: 5324   3rd Qu.: 6.540   3rd Qu.: 6.540  
 Max.   :95.00   Max.   :18823   Max.   :10.740   Max.   :58.900  
                                                                  
       z         
 Min.   : 0.000  
 1st Qu.: 2.910  
 Median : 3.530  
 Mean   : 3.539  
 3rd Qu.: 4.040  
 Max.   :31.800  
                 
diamonds |> str()
tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
 $ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

cut、color、與 clarity 三個變量是 factor (事實上是 ordered factors)


3. 請截取 price 變量值大於等於第一個四分位且小於第三個四分位的子樣本 (介於第一個四分位與第三個四分位之間的樣本),並指出這個子樣本的樣本數

s = diamonds$price |> summary()
d = diamonds[diamonds$price < s[5] &
               diamonds$price >= s[2],]
d |> str()
tibble [26,972 × 10] (S3: tbl_df/tbl/data.frame)
 $ carat  : num [1:26972] 0.7 0.86 0.7 0.71 0.78 0.7 0.7 0.96 0.73 0.8 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 1 5 3 3 2 2 1 3 4 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 4 2 4 2 3 3 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 3 2 4 4 2 4 5 2 3 3 ...
 $ depth  : num [1:26972] 62.5 55.1 61.6 62.4 63.8 57.5 59.4 66.3 61.6 61.5 ...
 $ table  : num [1:26972] 57 69 56 57 56 58 62 62 59 58 ...
 $ price  : int [1:26972] 2757 2757 2757 2759 2759 2759 2759 2759 2760 2760 ...
 $ x      : num [1:26972] 5.7 6.45 5.7 5.68 5.81 5.85 5.71 6.27 5.77 5.97 ...
 $ y      : num [1:26972] 5.72 6.33 5.67 5.73 5.85 5.9 5.76 5.95 5.78 5.93 ...
 $ z      : num [1:26972] 3.57 3.52 3.5 3.56 3.72 3.38 3.4 4.07 3.56 3.66 ...

子樣本的樣本數是 26972


4. 請針對前一題所得到的在樣本使用 geom_bar() 以及 facet_wrap() 函數求導 cut 變量與 color 變量的交叉直方圖,其中分圖的依據是 cut 變量

d |> ggplot()+ geom_bar(aes(color)) + facet_wrap(~cut)


5. 請針對前一題所得到的在樣本使用 tapply() 函數

求導依 cut 變量分組之 price 變量的分組中位數 (median) ,請以 data.frame 的方式列舉這些中位數

tapply(d$price,d$cut,median,na.rm = T) |> enframe()

6. 請使用 grom_col() 函數製作分組中位數的直方圖

tapply(d$price,d$cut,median,na.rm = T) |>
  enframe() |> 
  ggplot() + geom_col(aes(name,value))