2016-01-08 18 views
2

我正試圖根據組將數據集分解爲分位數。使用cut和ddply時不會出現獨特的錯誤

我有下面的代碼,如果我嘗試使用seq(0,1,.5)削減它工作正常,但是當我換到seq(0,1,.2)然後它給做:

錯誤cut.default(X = fwd_quarts $ V ,符= 位數(fwd_quarts $ v,:「遊」是不是唯一的

特林不同的代碼,我不能從錯誤中脫身如何調整這個,所以當它擴展到更大的數據集分位數將被創建而沒有錯誤?

ddf <- vector(mode="numeric", length=0) 
df <- vector(mode="numeric", length=0) 
g<-data.frame(g= c(1,1,1,1,2,2,2,2,3,3)) 
v<-data.frame(v= c(1,4,4,5,NA,2,6,NA,7,8)) 
df<-cbind(g,v) 
df<-df[complete.cases(df), ] 


ddf<-ddply(df, "g", function(fwd_quarts){ 
    eps_quartile <- cut(x = fwd_quarts$v, breaks =quantile(fwd_quarts$v, probs = seq(0, 1, 0.5)),na.rm=TRUE, labels = FALSE, include.lowest = TRUE) 
    cbind(ddf,eps_quartile) 
}) 

df<-cbind(df,fwde_quart=ddf$eps_quartile) 

回答

1

這與ddply無關。

如果您的數據沒有生成唯一的中斷,您可以通過用獨特的語句包裝中斷來使它們變得唯一。

breaks =unique(quantile(fwd_quarts$v, probs = seq(0, 1, 0.2))) 

但是,這會降低您最初所需水平的數量。

一般來說,如果你有像c(1,1,1,2)這樣的數據,你不能將它分成3組。組的數量應該小於或等於數據中的唯一值。 HTH。

相關問題