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))
4

2 回答 2

3

使用你的mydata_cs,以下应该工作

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

根据您的第一行代码,我假设“第一个四分位数”是指最低四分位数。如果你想要最高的四分位数,只需将其更改为

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

您可能还想使用<=or>=而不是<and >

于 2013-01-22T16:21:38.513 回答
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]
于 2013-01-22T16:21:57.577 回答