如何重塑形状,然后将数据帧转换为dgCMatrix?

问题描述 投票:0回答:1

我有一个如下数据框(行名是“ 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   .    . 

其中“。”对应于零计数。

我尝试过重塑,reshape2,as.matrix,如此处许多文章所述,但没有成功。请帮助我解决这个特定示例。

最良好的祝愿,Tushar

r dataframe multiple-columns sparse-matrix reshape
1个回答
0
投票

这是标准long-to-wide transformation,最后还有一个额外步骤,可以将NA转换为'.'

library(dplyr)

df %>% 
  pivot_wider(gene, cell, values_from = count) %>% 
  mutate_if(is.numeric, ~ replace(., is.na(.), '.'))

#   gene c1 c2 c3 c8 c11
# 1    a  1  1  4  .   .
# 2    b  3  1  1  .   .
# 3    f  3  .  .  .   .
# 4    d  .  .  .  9   .
# 5    e  .  .  .  .   1
© www.soinside.com 2019 - 2024. All rights reserved.