2014-02-15 13 views
1

頁158韋翰的GGPLOT2的ddply誤解:數據分析精美圖案,指出這個例子:在韋翰的GGPLOT2書

選擇兩個最小的鑽石

ddply(鑽石,(彩色),子集,訂購。 (克拉)< = 2)

菱形數據集是巨大的:

> nrow(diamonds) 
[1] 53940 

因此,我所選擇的小樣本:

library(plyr) 
library(ggplot2) 

set.seed(123) 
rows=sample(nrow(diamonds),50) 
mydiamonds=diamonds[rows,] 

然後我嘗試了他對我的命令。

> ddply(mydiamonds,.(color),subset,order(carat)<=2) 
    carat  cut color clarity depth table price x y z 
1 0.51 Ideal  D  VS2 61.2 55 1882 5.18 5.16 3.16 
2 0.58 Ideal  D VVS1 61.6 60 3154 5.34 5.35 3.29 
3 0.70 Premium  E  SI1 59.7 60 2394 5.81 5.79 3.46 
4 0.42 Ideal  E  SI2 62.9 56 898 4.80 4.77 3.01 
5 0.40 Premium  F  SI1 61.2 58 945 4.74 4.71 2.89 
6 0.61 Premium  F  SI1 60.4 56 1359 5.47 5.43 3.29 
7 1.52 Premium  G  VS2 62.6 55 12958 7.39 7.28 4.59 
8 0.33 Ideal  G VVS1 61.5 56 868 4.45 4.46 2.74 
9 0.71 Ideal  H  IF 62.0 54 3190 5.71 5.75 3.55 
10 1.04 Ideal  H  VS2 60.7 56 5805 6.56 6.61 4.00 
11 0.70 Ideal  I  SI1 61.8 57 2436 5.67 5.72 3.52 
12 0.31 Ideal  I  SI1 62.5 56 537 4.35 4.29 2.70 
13 1.35 Premium  J  VS2 60.5 56 6254 7.19 7.12 4.33 
14 0.57 Premium  J  VS2 60.2 62 1176 5.40 5.33 3.23 

請注意,顏色H的兩個最小克拉尺寸是0.71和1.04。然而,考慮以下因素:

> subset(mydiamonds,color=="H") 
     carat  cut color clarity depth table price x y z 
22060 1.74 Very Good  H  SI2 62.1 59 10086 7.65 7.78 4.79 
50726 0.70  Ideal  H  SI1 62.5 56 2294 5.64 5.69 3.54 
2458 0.71  Ideal  H  IF 62.0 54 3190 5.71 5.75 3.55 
38201 0.44 Very Good  H VVS1 63.1 56 1016 4.83 4.87 3.06 
29333 0.31 Premium  H  VS1 62.6 60 698 4.32 4.30 2.70 
17151 1.50  Good  H  SI2 60.8 64 6846 7.27 7.20 4.40 
12485 1.07 Very Good  H  VS2 61.5 57 5254 6.57 6.63 4.06 
14334 1.04  Ideal  H  VS2 60.7 56 5805 6.56 6.61 4.00 

注意,這說明我還沒有與ddply命令所選顏色H的兩個最小克拉鑽石。

那麼,這是書中的一個錯誤,還是我對這個問題錯誤?那麼ddply的正確用法是從我的數據集中選擇每種顏色的兩顆最小的鑽石,這將是什麼?

回答

0

事實上,它不會返回最小的克拉,而只是列表中的第一個。

要得到兩個最小的克拉,您需要採用訂單函數返回的兩個第一個值。下面的代碼似乎工作:

ddply(mydiamonds,.(color), function(df) df[with(df, order(carat))[1:2], ]) 

    carat  cut color clarity depth table price x y z 
1 0.40  Ideal  D  VS2 61.6 57 982 4.71 4.77 2.92 
2 0.50  Fair  D  SI1 65.7 56 1323 5.01 4.97 3.28 
3 0.30  Ideal  E  VS1 62.5 56 778 4.30 4.28 2.68 
4 0.32 Very Good  E  SI1 63.3 55 672 4.36 4.33 2.75 
5 0.40 Premium  F  SI1 61.2 58 945 4.74 4.71 2.89 
6 0.61 Premium  F  SI1 60.4 56 1359 5.47 5.43 3.29 
7 0.32  Ideal  G VVS2 61.6 56 708 4.42 4.44 2.73 
8 0.33  Ideal  G VVS1 61.5 56 868 4.45 4.46 2.74 
9 0.31 Premium  H  VS1 62.6 60 698 4.32 4.30 2.70 
10 0.44 Very Good  H VVS1 63.1 56 1016 4.83 4.87 3.06 
11 0.31  Ideal  I  SI1 62.5 56 537 4.35 4.29 2.70 
12 0.70  Ideal  I  SI1 61.8 57 2436 5.67 5.72 3.52 
13 0.57 Premium  J  VS2 60.2 62 1176 5.40 5.33 3.23 
14 1.35 Premium  J  VS2 60.5 56 6254 7.19 7.12 4.33 
+0

這對大衛有意義嗎? @hadley?還是人?任何反饋 ? –