如何重塑数据帧,然后将其转换为dgCMatrix?
我有一个如下所示的数据帧(行名是“1”、“2”、“3”…)。由于每列中都有非唯一的条目,因此我无法将它们中的任何一个指定为行名如何重塑数据帧,然后将其转换为dgCMatrix?,r,dataframe,multiple-columns,sparse-matrix,reshape,R,Dataframe,Multiple Columns,Sparse Matrix,Reshape,我有一个如下所示的数据帧(行名是“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和c
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
(基因作为行名称,单元格作为列名,计数值作为数据点)
其中“.”对应于零计数
我在这里的许多帖子中都提到过重塑、重塑2、as.matrix,但都没有成功。首先转换为长格式并将gene列设置为rownames:
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")
谢谢。这正是我想要的。真的很有帮助!酷。很高兴它对您有用:)
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")
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