将RNAseq数据集子集化以在R中进行比较的最佳方法

时间:2017-11-04 04:04:18

标签: r

我有一个单细胞RNAseq数据集,我一直用R来分析。所以我有一个205列和15000行的数据框。每列都是一个细胞,每一行都是一个基因。

我有一个注释矩阵,它具有每个单元格的标识。例如,患者ID,疾病状况等......

我想根据注释矩阵提供的分组信息进行不同的比较。

我知道在python中,您可以创建附加到单元ID的字典。

在R中以不同方式执行相同数据集的子集的有效方法是什么?

到目前为止,我一直在做的是:

EC_index <-subset(annotation_index_LN, conditions == "EC_LN")
CP_index <-subset(annotation_index_LN, conditions =="CP_LN")

CD69pos <-subset(annotation_index_LN, CD69 == 100)
EC_CD69pos <- subset(EC_index, CD69 == 100)
EC_CD69pos <- subset(EC_CD69pos, id %in% colnames(manual_normalized))
CP_CD69pos <- subset(CP_index, CD69 == 100)
CP_CD69pos <- subset(CP_CD69pos, id %in% colnames(manual_normalized))

2 个答案:

答案 0 :(得分:0)

这可能不会完全回答您的问题,但我认为即使在您开始尝试对数据进行子集化之前,您也可以考虑将其转换为SummarizedExperiment。这是一种可以保存要素和样本的注释数据的对象,如果您决定对样本进行子集化,删除行等,则会保留所有正确引用的对象。这种类型的对象通常由Bioconductor上托管的包实现。他们有各种基因组学管道的大量教程,我相信你可以在那里找到更详细的信息。

http://bioconductor.org/help/course-materials/

答案 1 :(得分:0)

以下内容来自R中的iris数据,因为您没有提供最简单的数据示例。

为此你需要一个R包来访问%>%magrittr R包,但也可以在dplyr中找到。

如果你需要进行大量的子集化,那么在将参数传递给子集的函数中有以下内容。

iris %>% 
  subset(Species == "setosa" & Petal.Width == 0.2 & Petal.Length == 1.4) %>% 
  subset(select = !is.na(str_match(colnames(iris), "Len")))

#         Sepal.Length Petal.Length
# 1           5.1          1.4
# 2           4.9          1.4
# 5           5.0          1.4
# 9           4.4          1.4
# 29          5.2          1.4
# 34          5.5          1.4
# 48          4.6          1.4
# 50          5.0          1.4