R中Factor類型選取子集


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

第一種方法比較笨拙,建議使用第二種方法。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM