R語言行篩選的方法之filter函數(shù)詳解
下面介紹一下R語言中行篩選的方法,主要介紹filter函數(shù)
1. 數(shù)據(jù)
這里,使用asreml分析中的BLUP值為例,相關(guān)的模型為:
m1 = asreml(Phen ~ G , random = ~ vm(Progeny,ainv) + vm(Dam,ainv) + vm(Progeny,dinv),
workspace = "10Gb", residual = ~ idv(units),data = dat)
summary(m1)$varcomp

計算育種值:
blup = coef(m1)$random head(blup) tail(blup)

數(shù)據(jù)特點:
- 沒有ID列,rownames的前綴為類型,比如
vm(Progeny, ainv)為加性效應(yīng)的BLUP值,vm(Progeny,dinv)為顯性效應(yīng)的BLUP值。
提取目的:
- 提取加性效應(yīng)的BLUP值,顯性效應(yīng)的BLUP值和母體效應(yīng)的BLUP
- 值提取BLUP值大于0.1的個體
2. 生成ID列和類型
首先,把rowname提取,作為新的一列
blup1 = blup %>% as.data.frame() %>% mutate(ID = rownames(.)) head(blup1)

根據(jù)下劃線,進行分列:
blup2 = blup1 %>% separate(ID,into = c("Type","IID"),sep = "_",remove = F)
head(blup2)

3. 提取effect大于0.1的行
re1 = blup2 %>% filter(effect>0.1) head(re1)

4. 提取加性效應(yīng),且effect小于0的行
這里,條件之間,默認(rèn)是并集,如果想用交集,用|間隔。
re2 = blup2 %>% filter(Type == "vm(Progeny, ainv)",effect <0) head(re2)

5. 根據(jù)部分行名刪選
select函數(shù),可以根據(jù)開頭,中間,結(jié)尾,進行列的刪選。
filter結(jié)合其它函數(shù),也可以進行行的篩選。
如果想對ID中,包含ainv的行,進行篩選,可以這樣操作:
re3 = blup2 %>% filter(str_detect(ID,"ainv")) %>% arrange(-effect) head(re3)

注意,這里str_detect的pattern是正則表達式。如果直接用原始的字符:
re3 = blup2 %>% filter(str_detect(ID,"vm(Progeny, ainv)")) %>% arrange(-effect) head(re3)
可以看到,報錯,如果想要支持,需要對括號用兩個反斜線進行轉(zhuǎn)義。

轉(zhuǎn)義后的代碼:
re3 = blup2 %>% filter(str_detect(ID,"vm\\(Progeny, ainv\\)")) %>% arrange(-effect) head(re3)

6. 固定字符特征進行行篩選
str_detect沒有fixed = T的選項,如果想固定字符匹配,可以用fixed()函數(shù):
re3 = blup2 %>% filter(str_detect(ID,fixed("vm(Progeny, ainv)"))) %>% arrange(-effect)
head(re3)

總結(jié)
到此這篇關(guān)于R語言行篩選的方法之filter函數(shù)詳解的文章就介紹到這了,更多相關(guān)R語言行篩選filter函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語言實現(xiàn)用cbind合并兩列數(shù)據(jù)
這篇文章主要介紹了R語言實現(xiàn)用cbind合并兩列數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
R語言之反轉(zhuǎn)ggplot2中的圖例鍵順序方法詳解
在本教程中,我們將學(xué)習(xí)如何反轉(zhuǎn)ggplot2中圖例鍵的順序,文章通過詳細(xì)的示例代碼給大家介紹如何反轉(zhuǎn)ggplot2中的圖例鍵順序,感興趣的同學(xué)可以跟著小編一起來學(xué)習(xí)2023-05-05

