2013-01-22 61 views
0

是否有一種智能的方法可以根據列總和的分位數從數據框中選擇列?例如,只能從列總和位於第一個分位數的數據幀中選擇列。我可以基於列數據的數據子集,我可以計算列總和的分位數,但有沒有一種方法來組合這些方法?謝謝。基於列總和的分位數的子集數據(列)

# e.g. subset data - select columns whose column sums are less than 5 
mydata <- mydata[,colSums(mydata) < 5] 

# e.g create quantiles on colSums 
mydata_cs <- colSums(mydata) 
quart.mydata_cs <- quantile(mydata_cs,probs=seq(0,1, by=0.25)) 
+0

用'quart.mydata_cs'替換'5',其中'quart.mydata_cs = quantile(mydata_cs,probs = 0.25)'? – liuminzhao

回答

3

使用您mydata_cs,下面應該工作

mydata.firstquart <- mydata[,mydata_cs < quantile(mydata_cs,0.25)] 

根據您的第一行代碼,我被「第一四分」假設你的意思最低階層。如果你想要的是最高的四分位數,只需要改變,要

mydata.firstquart <- mydata[,mydata_cs > quantile(mydata_cs,0.75)] 

您可能還需要使用<=>=而不是<>

1
x <- c(1,2,3,4,5) 
y <- c(4,6,9,2,9) 
df <- data.frame(x,y) 
q <- quantile(colSums(df),probs=seq(0,1, by=0.25)) 
df[,colSums(df) < q[2] ,drop=FALSE]