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