R:使新向量与因子中的指定级别相关联

时间:2014-05-06 09:55:20

标签: r vector r-factor

我遇到了一项非常简单的任务,并希望有人能帮助我。

我想基于1个因子级别从现有向量中创建一个新的(子)向量。 示例:

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

我想从v制作一个新的载体,只包含“Drug”或“Placebo”。导致:

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以轻松地按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`?