R语言如何统计数据列中等于特定值的元素数量
问题根因
第一行代码的写法存在逻辑错误:
CYP$Genotype == "CYP1B1 KO"的运行结果是一个和CYP$Genotype完全等长的逻辑向量,向量每个元素是TRUE/FALSE,标记对应行的基因型是否匹配目标值。直接对这个完整的逻辑向量调用length(),统计的是整个向量的总元素个数,本质和直接统计Genotype列长度没有区别,自然返回结果和第二行完全一致,根本没有完成匹配计数的逻辑。
正确实现方案
- 单类别计数(统计
CYP1B1 KO对应的样本量):
可以用两种标准写法,注意处理可能存在的缺失值:# 写法1:利用R中TRUE等价于1、FALSE等价于0的规则求和,运行效率更高 sum(CYP$Genotype == "CYP1B1 KO", na.rm = TRUE) # 写法2:筛选出匹配目标值的子集后统计长度 length(which(CYP$Genotype == "CYP1B1 KO")) - 全类别计数(一次性统计Genotype列所有分类变量对应的数据点数量):
直接调用table函数即可自动完成分类计数:table(CYP$Genotype, useNA = "ifany")
提示:参数
na.rm=TRUE、useNA="ifany"的作用是处理列中可能存在的缺失值NA,避免计数结果出现偏差。
内容的提问来源于stack exchange,提问作者Dante
相关产品推荐
相关产品推荐

