在这里使用这些数据:
sample Wu.gene bin other
N1 BA00001 Wolbachia dontcare6
W30 BA00002 Entomo dontcare4
N1 BA00002 Rhizobiales dontcare7
N15 BA00002 Rhizobiales dontcare6
W30 BA00004 Bacteriodetes dontcare1
N15 BA00004 Bacteriodetes dontcare2
W30 BA00005 Alistepes dontcare1
N15 BA00005 Alistepes dontcare1
N15 BA00006 Alistepes dontcare1
W30 BA00006 Rumino dontcare6
W30 BA00007 Wolbachia dontcare6
W30 BA00015 Bacteriodetes dontcare1
N1 BA00015 Rhizobiales2 dontcare6
N15 BA00015 Wolbachia dontcare6
N1 BA00016 Entomo dontcare3
W30 BA00016 Entomo dontcare5
W30 BA00017 Alistepes dontcare1
W30 BA00018 Rumino dontcare6
N15 BA00019 Wolbachia dontcare6
N15 BA00020 Rhizobiales dontcare6
N15 BA00021 Rhizobiales2 dontcare6
N15 BA00022 Entomo dontcare6
N1 BA00025 Alistepes dontcare1
W30 BA00025 Rhizobiales dontcare6
W30 BA00025 Rhizobiales dontcare6
N15 BA00025 Wolbachia dontcare6
N1 BA00026 Rumino dontcare6
N15 BA00026 Wolbachia dontcare6
W30 BA00027 Rhizobiales2 dontcare6
N15 BA00031 Wolbachia dontcare6
N15 BA00033 Wolbachia dontcare6
N15 BA00033 Wolbachia dontcare6
N15 BA00033 Wolbachia dontcare6
我一直在尝试使用变形库和dcast函数创建矩阵
这个想法是制作一个“ bin”〜“ Wu.gene”矩阵(“ https://www.mediafire.com/file/qv9tdnnvwac6xfe/fake_data/file”),但是使用“ sample”作为矩阵值。让我解释:
如果您查看fake.data表,则Wu.gene“ BA00033”在bin“ Wolbachia”中发生3次,而所有3次都在同一“ N15”样本中。但是,Wu.gene“ BA00016”在bin“ Entomo”中出现2次,但在2个不同的样本中出现:“ N1”和“ W30”。
我可以轻松地构造一个Wu.gene〜bin矩阵,该矩阵将向我显示Wu.gene在同一bin中的次数(无论其是否在同一样本中)
bin BA00016 BA00033
Entomo 2 0
Wolbachia 0 3
但是我无法指定,我想要一个矩阵来显示在同一样本中它发生的时间,看起来像这样
bin BA00016 BA00033
Entomo 2 0
Wolbachia 0 1
我试过了
fake<-read.table(fake_data, header=T)
dcast(data=fake, formula=bin ~ Wu.gene, value.var = "sample")
但它不断地给我提供Wu.gene〜bin的出现次数,我不知道如何指定我希望它查看“样本”列中的值
任何帮助将不胜感激!
我认为您可以使用fun.aggregate
传递函数来应用,在这种情况下,uniqueN
即要计算唯一值。
library(data.table)
dcast(setDT(fake), bin ~ Wu.gene, value.var = "sample",
fill = 0, fun.aggregate = uniqueN)
或使用pivot_wider
:
tidyr::pivot_wider(fake, names_from = Wu.gene, values_from = sample,
values_fn = n_distinct, id_cols = bin, values_fill = 0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句