如何将我的基因数据转换为稀疏矩阵?

How can I convert my gene data into a sparse matrix?

我有一个 csv 文件,其中的数据按以下格式排列:

  Species     Transcripts per million        ARG             subtype
  Ktedonobacter racemifer   40.1956726 macrolide-lincosamide-streptogramin  macB
  Ktedonobacter racemifer   16.1032353 macrolide-lincosamide-streptogramin  macB
  Ktedonobacter racemifer   11.94756169 macrolide-lincosamide-streptogramin macB
  Ktedonobacter racemifer   4.827971857 macrolide-lincosamide-streptogramin macB
  Ktedonobacter racemifer   0   beta-lactam penA
  Kutzneria albida  31.74637821 beta-lactam penA
  Kutzneria albida  30.05937261 beta-lactam penA
  Kutzneria albida  18.00431172 beta-lactam penA
  Kutzneria sp. 744 16.78071772 beta-lactam penA

我想转换出现在顶部的数据,如果它出现在相同的物种和基因中(在示例数据中我添加了 TPM对于 macB 基因,因为它出现在 Ktedonobacter racemifer 中)。然后我想像下面的 table 那样以稀疏格式排列它。有没有 R 专家可以帮助我解决这个问题?谢谢!

                        macB    penA
Ktedonobacter racemifer 73.07       0
Kutzneria albida            0   79.81
Kutzneria sp. 744           0    16.7

我尝试以 .csv 格式读取它,创建一个矩阵并将其转换为稀疏矩阵,但我收到错误代码...可能是因为我不熟悉 Matrix 模块

在基础 R 中,您将使用 aggregate,然后使用 xtabs,公式相同:

xtabs(Transcripts.per.million~Species+subtype,aggregate(.~Species+subtype,df,sum))
                         subtype
Species                       macB     penA
  Ktedonobacter racemifer 73.07444  0.00000
  Kutzneria albida         0.00000 79.81006
  Kutzneria sp.744         0.00000 16.78072