2016-08-24 44 views
-1

我想了解如何劃分和創建區間;試過?削減但無法弄清楚如何削減r工程。
這裏是我的問題:R怎樣在R中工作

set.seed(111) 
data1 <- seq(1,10, by=1) 
data1 
[1] 1 2 3 4 5 6 7 8 9 10 
data1cut<- cut(data1, breaks = c(0,1,2,3,5,7,8,10), labels = FALSE) 
data1cut 
[1] 1 2 3 4 4 5 5 6 7 7 

1.爲什麼8,9,10不包括在data1cut結果呢?
2.爲什麼摘要(data1)摘要(data1cut)產生不同的結果?

summary(data1) 
Min. 1st Qu. Median Mean 3rd Qu. Max. 
1.00 3.25 5.50 5.50 7.75 10.00 

summary(data1cut) 
Min. 1st Qu. Median Mean 3rd Qu. Max. 
1.00 3.25 4.50 4.40 5.75 7.00 

我應該如何更好地利用削減,這樣我可以創造說的4個倉基於摘要(數據1)的結果嗎?

bin1 [1 -3.25] 
bin2 (3.25 -5.50] 
bin3 (5.50 -7.75] 
bin4 (7.75 -10] 

謝謝。

+0

你爲什麼認爲某些值不包括在內? 「剪切」結果你期望什麼?也許可以對不是第一個整數的值進行剪切以避免混淆,並仔細閱讀段落** Value ** from'cut':*返回一個因子,除非labels = FALSE,這會導致整數向量爲級別代碼。* – Cath

+0

可能是我對'cut'的理解非常有限。當我做'cut'時,我的期望是在創建的範圍中創建一個bin,並在bin中創建相應的值(因子)?那麼,假設的分佈度量結果如「summary(data1cut)」和「summary(data1)」是否相似? – deepseefan

+1

什麼切確實把你的數據放入垃圾箱,並且對於你的每個矢量值,它給出了相關垃圾箱的「代碼」。你可以通過'table(data1,data1cut)'來更好地理解哪個值落入哪個bin – Cath

回答

0

cut在您的示例中將矢量分成以下幾部分: 0-1(1); 1-2(2); 2-3(3); 3-5(4); 5-7(5); 7-8(6); 8-10(7

根據提供的breaks值,括號中的數字是由cut分配給每個bin的默認標籤。

cut默認情況下不包括在較低範圍內。如果你想改變它,那麼你需要在include.lowest參數中指定它。

  1. 你沒有指定這個功能標籤和默認參數爲FALSE這樣的層次代碼(括號內)的整數向量來代替。

  2. summary(data1)是原始數據的摘要,summary(data1cut)是您拆分的摘要。

你可以得到你需要使用分割:

data2cut<- 
    cut(data1, breaks = c(1, 3.25, 5.50, 7.75, 10), 
     labels = c("1-3.25", "3.25-5.50", "5.50-7.75", "7.75-10"), 
     include.lowest = TRUE) 

結果如下:

data2cut

[1] 1-3.25 1- 3.25 1-3.25 3.25-5.50 3.25-5.50 5.50-7.75 5.50-7.75 7.75-10 7.75-10
[10] 7.75-10
級別:1-3.25 3.25-5.50 5.50-7.75 7.75-10

我希望現在很清楚。

+0

非常感謝,除了第一行之外的所有內容都很清楚。爲什麼3-5的bin只保留值「4」而不是「5」; 5-7只有'5'而不是'6,7'(因爲上面的值默認包含在bin中,而假設的bin 8-10保存着'9,10';但顯然情況並非如此)同樣的情況爲其他箱?你能否詳細說一下「cut」是如何分裂並返回一個因子的?這個過程中是否有任何數據丟失?再次感謝。 – deepseefan

+1

bin 3-5保存'4'和'5'。當你使用'data1cut [5]'時,它將返回第四個bin,即bin3-5。請重新閱讀@Cath的回覆,她非常清楚地解釋了「剪切」。我認爲你用默認的箱標籤混淆了實際值。 – epo3