R语言遍历Scores唯一值按ID分组计算组内方差问题求助
问题原因
- 循环对象错误:你当前遍历的是
df1$Scores列的所有行值,同一个细胞类型会触发多次重复循环,没有意义 - 未做数据筛选:每次调用
aggregate时使用的都是完整的df1数据集,没有过滤出当前循环对应的细胞类型子集,所以所有计算结果完全一致 - 大小写不匹配:R语言大小写敏感,你的示例数据列名为
Scores、Value,代码中写的小写scores、value会直接运行报错。
修正后代码
# 先提取所有唯一的细胞类型值 unique_scores <- unique(df1$Scores) for (i in unique_scores) { # 筛选出当前细胞类型对应的子集 sub_df <- df1[df1$Scores == i, ] # 针对子集计算每个ID的Value方差和计数 T1 <- aggregate(Value ~ ID, sub_df, function(x) c(Var = var(x), Count = length(x))) # 展开嵌套的计算结果为普通列,避免写入csv格式异常 T1 <- do.call(data.frame, T1) # 写入文件,关闭行号输出 write.csv(T1, file = paste0(i, "_withinID.csv"), row.names = FALSE) }
内容的提问来源于stack exchange,提问作者Drashti
相关产品推荐
相关产品推荐

