我的數據框(bact)有〜4500行(細菌分類羣)和19個有用的列(主要是樣本)。這是包含多個樣品列(p'x')中的rankID信息(有序因子)和基因匹配的基因組學數據的輸出,以及跨分類羣(總數)的具有基因匹配總和的列。我打算在對行進行清理後轉換爲「長」格式。使用有序因子過濾大型數據集,條件是R中的其他值與dplyr?
問題是:有許多重疊的類羣(具有分類(名稱更高級別分類單元是未分類,和較低級的分類單元)),並用於下游數據分析和繪圖的目標是有系統發育與數據相關的相關分類單元描述(在這種情況下是基因匹配)。
例如:
rankID taxon total
0.2.1 Acidobacteria 994577
0.2.1.1 Acidobacteria 917570
0.2.1.1.1 11B-2 3
0.2.1.1.1.1 unclassified 3
0.2.1.1.1.1.1 unclassified 3
0.2.1.1.2 AT-s3-28 2975
0.2.1.1.2.1 unclassified 2975
0.2.1.1.2.1.1 unclassified 2975
我想刪除具有在「總」列中的值相同,並且所有行較高「rankID」(在這種情況下:0.2。 1.1.1; 0.2.1.1.1.1; 0.2.1.1.2.1; 0.2.1.1.2.1.1)。 注意:我不想刪除所有分類中的'未分類',因爲有時這些實際上是必須保留的。
以下是我認爲可能的工作:
bact<- read.csv('cSSU_bacteria_full.csv')
str(bact)
bact$rankID <- factor(bact$rankID, ordered = TRUE)
library(dplyr)
bact %>%
filter(!(any(order(levels(rankID)) < order(levels(rankID)) & total == total)))
的目標是去除冗餘行,保持在總量相等的最低級的分類單元,因此消除分類單元互相解釋,但一個分類(有一個名字),其他的不是。
在此先感謝。