【问题标题】:R: Make new vector correlating to a specified level in a factorR:使新向量与因子中的指定级别相关
【发布时间】:2014-05-06 09:55:19
【问题描述】:

我遇到了一个非常简单的任务,希望有人可以帮助我。

我想根据因子的 1 级从现有向量创建一个新的(子)向量。 示例:

v = c(1,2,3,4,5,6,7,8,9,10)
f = factor(rep(c("Drug","Placebo"),5))

我想从 v 创建一个新向量,仅包含“药物”或“安慰剂”。结果:

vDrug = 1,3,5,7,9   
vPlacebo = 2,4,6,8,10

提前致谢!

【问题讨论】:

    标签: r vector r-factor


    【解决方案1】:

    您可以轻松地将v 子集化为f

    v[ f == "Drug" ]
    [1] 1 3 5 7 9
    

    但是,在更复杂的环境或更大的数据集下,这种方法可能会变得容易出错。因此,最好将vf一起存储在data.frame中,而不是在data.frame上执行各种查询和转换:

    mdf <- data.frame( v = c(1,2,3,4,5,6,7,8,9,10), f = factor(rep(c("Drug","Placebo"),5)) )
    mdf
        v       f
    1   1    Drug
    2   2 Placebo
    3   3    Drug
    4   4 Placebo
    ...
    

    如果您想以交互方式查看数据,可以使用subset 函数进行子集化:

    subset( mdf, f == "Drug", select=v )
    

    如果您以编程方式执行此操作,则应该使用

    mdf[ mdf$f == "Drug", "v" ]
    

    两者的区别看一下:Why is `[` better than `subset`?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      相关资源
      最近更新 更多