r - 使用第三个值的频率作为值创建 2 个变量矩阵
问题描述
在这里使用这些数据:
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
我一直在尝试使用 reshape 库和 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)
推荐阅读
- cryptography - 生成默克尔树一致性证明
- python - 根据唯一的列组合将数据框拆分为多个数据框
- azure - 如何通过 Apple AirPlay 使用 Azure 媒体服务直播
- c - 战舰 | 来自 char 数组的垃圾打印输出
- excel - Excel Worksheet Function Month in VBA
- angular - 遍历 Observable AlphaVantage
- python - BeautifulSoup“查找”方法莫名其妙地返回NoneType
- javascript - 根据中间模型的属性对数组进行排序
- ruby-on-rails - 在 Heroku 上部署时如何修复错误 500
- c# - 在列中安装 iframe