R中的二进制分组

时间:2010-07-06 06:36:22

标签: r statistics

假设我有两个相同维度的向量:

x <-c(0.49534,0.80796,0.93970,0.99998)
count      <-c(0,33,0,4)

如何将矢量'x'分组为两个矢量:

  1. 包含x中值{大于0且
  2. grzero值的向量count
  3. 向量eqzero,其值为x,count值等于零。
  4. 屈服

    > print(grzero)
    > [1] 0.80796 0.99998
    > print(eqzero)
    > [1] 0.49534 0.93970
    

2 个答案:

答案 0 :(得分:17)

grzero <- x[count > 0]
eqzero <- x[count == 0]

为什么这样做是因为像count > 0这样的表达式会计算为布尔值的向量,因此count > 0FALSE TRUE FALSE TRUEcount == 0TRUE FALSE TRUE FALSE。然后使用布尔向量索引向量x,并仅获取布尔向量的对应值为TRUE的那些元素。

答案 1 :(得分:2)

拆分可能很有用,

split(x,c("eqzero","grzero")[(count>0)+1])

这是一个糟糕的黑客但是......