我有一個樣本(行)按物種(列)數據框。另一個數據框中的列將樣本編碼爲組。我想選擇所有組中的所有樣本都具有非零值的所有列。從數據框中選擇列的樣本組爲非零
種框架:
structure(list(Otu000132 = c(0L, 56L, 30L, 52L, 1L, 4L, 31L, 4L, 17L, 9L, 4L),
Otu000144 = c(191L, 14L, 58L, 137L, 127L, 222L, 26L, 175L, 133L, 107L, 43L),
Otu000146 = c(0L, 0L, 0L, 0L, 16L, 62L, 41L, 16L, 60L, 32L, 0L),
Otu000147 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
Otu000151 = c(2L, 9L, 4L, 1L, 0L, 4L, 4L, 2L, 3L, 0L, 0L),
Otu000162 = c(2L, 1L, 0L, 0L, 1L, 1L, 0L, 2L, 1L, 0L, 0L),
Otu000164 = c(2L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
Otu000174 = c(0L, 0L, 3L, 1L, 0L, 2L, 0L, 1L, 2L, 1L, 0L),
Otu000176 = c(1L, 9L, 0L, 1L, 2L, 5L, 3L, 3L, 8L, 2L, 2L),
Otu000186 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L),
Otu000190 = c(1L, 1L, 1L, 0L, 0L, 5L, 1L, 2L, 7L, 0L, 0L)),
.Names = c("Otu000132", "Otu000144", "Otu000146", "Otu000147",
"Otu000151", "Otu000162", "Otu000164", "Otu000174",
"Otu000176", "Otu000186", "Otu000190"),
row.names = 30:40, class = "data.frame")
分組架:
structure(c(30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
.Dim = c(11L, 2L))
所需的輸出:
structure(list(Otu000132 = c(0L, 56L, 30L, 52L, 1L, 4L, 31L, 4L, 17L, 9L, 4L),
Otu000144 = c(191L, 14L, 58L, 137L, 127L, 222L, 26L, 175L, 133L, 107L, 43L),
Otu000151 = c(2L, 9L, 4L, 1L, 0L, 4L, 4L, 2L, 3L, 0L, 0L),
Otu000176 = c(1L, 9L, 0L, 1L, 2L, 5L, 3L, 3L, 8L, 2L, 2L),
Otu000190 = c(1L, 1L, 1L, 0L, 0L, 5L, 1L, 2L, 7L, 0L, 0L)),
.Names = c("Otu000132", "Otu000144", "Otu000151",
"Otu000176", "Otu000190"),
row.names = 30:40, class = "data.frame")
我覺得這應該是東西,我可以dplyr選擇這樣做,但我無法弄清楚。任何人都有建議讓我走上一條道路?
這不是很清楚。你的第三列是'Otu000146',它有4個0,即30,31和32是0.是否該列包含在所需的輸出中?否則'sp1 [!Reduce('&',lapply(split(gp1 [,1],gp1 [,2]),function(x){x1 < - sp1 [match(x,row.names(sp1)), ]; colSums(x1 == 0)> 0}))]'會給所有其他列。 – akrun
我的錯誤,我認爲它是目前在所有的組2,但它不是 – thermophile
你可以編輯你的文章,以改變預期的輸出 – akrun