您的位置:首页 > 其它

R中Factor类型选取子集

2013-02-10 13:23 99 查看
Factor是R中的一种数据类型,个人理解就是高级编程语言(C/C++,Python,PHP等)中的枚举

选取Factor数组中的子集不像character,numeric那样直观,在这里记录选取方法,可能不是最简洁的,如果有,还请高手指点。

主要思路:将factor转成character,然后按照character的方式选取子集。

看个例子:

fv <- rep(c('a','b'),5)
fv <- as.factor(fv)


输出如下数据

[1] a b a b a b a b a b
Levels: a b


现在,需要将fv的所有枚举取到,也就是'a'和'b'

names(summary(fv))


输出如下

[1] "a" "b"


通过下面的代码可以分别取到’a‘或’b‘的子集

labels <- names(summary(fv))fv[fv == labels[1]]  # 选取a的子集
fv[fv == labels[2]] # 选取b的子集


输出如下

> fv[fv == labels[1]]  # 选取a的子集
[1] a a a a a
Levels: a b
> fv[fv == labels[2]]  # 选取b的子集
[1] b b b b b
Levels: a b


到这里,提供一种更为方便的思路:将factor转化成numeric后,可以按照numeric的方式选取子集。

s <- as.factor(rep(c('a','b'),5))
as.numeric(s)


得到的数据如下:

[1] 1 2 1 2 1 2 1 2 1 2


第一种方法比较笨拙,建议使用第二种方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: