【问题标题】:How to reshape and then convert a data frame into dgCMatrix?如何重塑数据框然后将其转换为 dgCMatrix?
【发布时间】:2020-05-28 02:28:28
【问题描述】:

我有一个如下所示的数据框(行名是“1”、“2”、“3”...)。由于每列中都有非唯一条目,因此我无法将它们中的任何一个指定为行名。

gene cell count
a    c1    1
a    c2    1
a    c3    4
b    c1    3
b    c2    1
b    c3    1
f    c1    3
d    c8    9
e    c11   1

在每个细胞中测量每个基因(意味着它们在计数列中有一个值),但未显示零计数(例如,基因“a”在细胞 c8 和 c11 中的计数为零,因此不会出现)。

现在我想通过以下安排将数据框重塑/转换为 dgCMatrix

(基因作为行名,单元格作为列名,计数值作为数据点)

   c1  c2  c3  c8  c11 
a  1   1   4   .    .
c  3   1   1   .    . 

在哪里“。”对应于零计数。

我尝试过 reshape、reshape2、as.matrix,正如这里许多帖子中提到的那样,但没有成功。

【问题讨论】:

    标签: r dataframe multiple-columns sparse-matrix reshape


    【解决方案1】:

    你先转换成长格式,把基因列设置为行名:

    library(Matrix)
    library(dplyr)
    library(tidyr)
    
    mat <- df %>% pivot_wider(id_cols = gene,values_from = count,names_from = cell,
    values_fill = list(count=0)) %>% tibble::column_to_rownames("gene")
    

    然后到sparseMatrix:

    mat = Matrix(as.matrix(mat),sparse=TRUE)
    
        5 x 5 sparse Matrix of class "dgCMatrix"
      c1 c2 c3 c8 c11
    a  1  1  4  .   .
    b  3  1  1  .   .
    f  3  .  .  .   .
    d  .  .  .  9   .
    e  .  .  .  .   1
    

    【讨论】:

    • 非常感谢。这正是我一直在寻找的。确实很有帮助!
    • 酷。很高兴它对你有用:)
    猜你喜欢
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2021-11-03
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多