如何按另一变量分组计算数据框中某变量的唯一值频次
解决方案
以下是几种高效的方法,能直接按Variant_Classification分组统计Tumor_Sample_Barcode的唯一值数量,比拆分数据框的方式更简洁高效:
1. 使用dplyr包(tidyverse生态,语法直观)
如果已经安装了tidyverse,直接加载dplyr后用分组统计:
library(dplyr) df_maf %>% group_by(Variant_Classification) %>% summarise(unique_sample_count = n_distinct(Tumor_Sample_Barcode))
该方法会返回一个格式规整的数据框,包含分组类别和对应的唯一样本数,易读性强。
2. 使用data.table包(大数据集处理效率最优)
如果你的数据量较大,data.table的运算速度会明显优于其他方法:
library(data.table) setDT(df_maf)[, .(unique_sample_count = uniqueN(Tumor_Sample_Barcode)), by = Variant_Classification]
uniqueN()是data.table内置的高效统计唯一值的函数,配合分组操作by,能快速输出结果。
3. 基础R方法(无需额外安装包)
如果不想依赖第三方包,可以用基础R的aggregate函数:
aggregate( Tumor_Sample_Barcode ~ Variant_Classification, data = df_maf, FUN = function(x) length(unique(x)) )
该方法仅依赖基础函数,无需额外安装,适合快速验证需求。
这些方法都能直接得到你需要的统计结果,避免了手动拆分数据框的繁琐操作,同时效率更高。
内容的提问来源于stack exchange,提问作者Aryh
相关产品推荐
相关产品推荐

