获取巨大的单个单元格数据帧的每个样本中的总计数

问题描述

我有一个巨大的元数据文件,其中包含79列和78687行。这些元数据来自我们的癌症实验结果。 我正在使用dplyr查询该元数据中每个样本的单元格计数。

我有16个样本:

Sample list(Var1)

我需要找到每个样本中每种情况(肿瘤或正常或MSS_Status)的细胞计数。 我正在单独进行操作,如下所示

dim(Meta %>% filter(Condition == "Tumor" & MSI_Status=="MSS" & Location =="Left" & orig.ident == "B_cac10"));

# 689  24

我敢肯定有一种聪明的方法可以做到这一点,我如何才能一遍又一遍地得到答案?

P.S:我是一名生物学家,我在循环或编码方面的知识非常有限

编辑:1

可复制的示例

df <- data.frame(Condition = c("normal","normal","Tumor","Tumor"),MSI_Status = c("High","High","Low","Low"),Location = c("Lungs","Lungs","Kidney","Liver"),Clusters = c(1,2,4,6),orig.ident = c("B-cac10","B-cac11","T-cac15","B-cac15","B-cac19","T-cac22"))

我的代码

df %>% filter(Condition == "Tumor" & MSI_Status=="Low" & Location
=="Kidney" & orig.ident == "B-cac15")

预期结果:

每个原始身份的计数应在条件“肿瘤”,MSI_Status ==“低”和位置=“肾脏”下给出

非常感谢您的帮助,请保持安全。 戴夫

解决方法

您可以使用dplyr函数filter根据您的条件对数据进行子集化。然后,您可以使用dplyr count函数对orig.ident中的唯一值进行计数。如注释中所提到的,您可以选择在此功能内设置name = Freq。由于您是rename的新手,所以我选择使用R函数来尽可能地明确。

数据

df <- data.frame(Condition = 
c("Normal","Normal","Tumor","Tumor"),MSI_Status = 
c("High","High","Low","Low"),Location = c("Lungs","Lungs","Kidney","Liver"),Clusters = 
c(1,2,4,6),orig.ident=c("B-cac10","B-cac11","T-cac15","B- 
cac15","B-cac19","T-cac22"))

代码

library(dplyr)

df %>% 
  filter(Condition == "Tumor" & 
         MSI_Status == "Low" & 
         Location == "Kidney") %>% 
  count(orig.ident) %>% 
  rename(Freq = n)

#>   orig.ident Freq
#> 1    B-cac15    1
#> 2    B-cac19    1

reprex package(v0.3.0)于2020-09-05创建