1

我正在使用 miscTools 包并希望使用 colMedians。我将我的数据分成许多组,最终其中一些组只有一行。因此,colMedians 说“参数 'x' 必须是数字”。有没有办法让 colMedians 忽略这些组(或让这些值反刍),但计算 Stage.Duration 的中位数对于确实有不止一行的组?

数据如下所示:

Opportunity.Name       Stage.Duration       Probability
      Bob                 10                   20
      Bob                 20                   50
      Bob                 76                   90
      Jon                 50                   80
      Jon                 34                   50
      Jon                 23                   100

gdata <- split(data, Opportunity.Name)
gdata$`Bob`
Opportunity.Name       Stage.Duration       Probability
      Bob                 10                   20
      Bob                 20                   50
      Bob                 76                   90          
seven <- lapply(gdata, function(x){x[x$Probability>=70,]})
seven
Opportunity.Name       Stage.Duration       Probability
      Bob                 76                   90        

med<-sapply(seven, function(x) colMedians(x[,c("Stage.Duration", "Probability")]))

注意:“med”代码计算 Stage.Duration 和 Probability 的中位数,但我只需要 Stage.Duration,我只需要两列来运行这个特定的代码,不知道如何运行类似的函数。此代码适用于 colMeans。

4

1 回答 1

0

当使用括号对数组或矩阵进行子集时[ ],如果结果合适,通常会将结果强制转换为更小的维度对象。要关闭此行为,有一个名为 的标志drop

 # Sample Matrix
 M <- matrix(1:20, ncol=5)

 # Gets coerced to a single vector:
 colMeans(M[3, ])
   #  Error in colMeans(M[3, ]) : 
   #    'x' must be an array of at least two dimensions

 # Remains two-dimensional
 colMeans(M[3, , drop=FALSE])
    # [1]  3  7 11 15 19
于 2013-07-30T19:15:05.387 回答