基于列总和的分位数的子集数据(列)

时间:2013-01-22 16:14:48

标签: r dataframe subset

是否有一种智能方法可以根据列总和的分位数从数据框中选择列?例如,仅从列数和第一个分位数的数据帧中选择列。我可以基于数据的列总和,我可以计算列总和的分位数,但有没有一种方法可以合并这些?感谢。

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

2 个答案:

答案 0 :(得分:3)

使用mydata_cs,以下内容应该有效

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

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

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

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

答案 1 :(得分: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]