子集数据框基于每列的统计范围

时间:2013-12-03 17:36:55

标签: r subset apply sapply

我想通过仅选择超出特定范围的列来对数据框进行子集化。 IE,我想分别评估每列的max-min,只选择范围大于给定值的列。例如,给定以下简单数据帧,我想创建一个仅包含范围> gt的列的子集数据帧。 99.(专栏b和c。)

d <- data.frame(a=seq(0,10,1),b=seq(0,100,10),c=seq(0,200,20))

我在这里尝试修改示例:Subset a dataframe based on a single condition applied to multiple columns,但没有运气。我确定我错过了一些简单的事情。

1 个答案:

答案 0 :(得分:2)

您可以使用sapply()将函数应用于d的每一列,然后计算列值范围的差异。然后将其与99进行比较。结果您将获得TRUE或FALSE,然后将其用于子集列。

d[,sapply(d,function(x) diff(range(x))>99)]