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
第一種方法比較笨拙,建議使用第二種方法。