R语言中基于ICC条件调整样本量N的高效实现问询
调整聚类研究的样本量N(基于ICC值)
- 需求说明:仅对数据集中**存在ICC值(非NA)**的行,使用公式
N/(1 + (M - 1) * ICC)调整样本量N。其中:- N:原受试者数
- M:聚类规模
- ICC:组内相关系数
示例数据集
先模拟一个包含缺失ICC值的测试数据集:
df <- data.frame( 研究ID = 1:5, N = c(200, 150, 300, 250, 180), M = c(5, 8, 6, 4, 7), ICC = c(0.05, NA, 0.08, 0.03, NA) )
验证可行的代码
无需复杂的循环或if语句,直接利用R的向量化操作即可高效完成调整:
# 筛选出ICC非NA的行索引 idx <- which(!is.na(df$ICC)) # 对目标行的N值应用公式调整 df$N[idx] <- df$N[idx]/(1 + (df$M[idx] - 1) * df$ICC[idx])
代码说明
which(!is.na(df$ICC)):精准定位所有ICC值不为空的行,返回对应的索引位置- 通过索引对
df$N进行批量赋值,借助R的向量运算特性,比循环写法更简洁高效,也避免了循环易出现的逻辑错误
内容的提问来源于stack exchange,提问作者Ilaria
相关产品推荐
相关产品推荐

