循环遍历具有唯一值的一列,并按另一列分组以计算方差

Loop through one column with unique values, and group by another to calculate the variance

有人可以帮我解决这个问题吗?我有一个如下所示的数据框:

 Scores    ID     Value
 M1        A       5.67
 M1        A       9.99
 M2        A       10.96
 M1        A       7.89
 M1        B       9.36
 M3        A       4.56
 M2        A       5.55
 M1        B       8.97

在这个数据集中,分数是细胞类型,每个细胞类型的 ID 重复(即 M1 有 3 个 As) 我想遍历每个分数(细胞类型),然后计算每个重复 ID(在本例中为 A)的分数的方差。所以基本上我是在测量每个 ID 内(而不是之间)每个分数的可变性。

下面是我想到的代码,但是 .csv 文件中的所有值都具有相同的输出。

for (i in df1$scores) {
  T1 <- aggregate(value ~ ID, df1, function(x) c(Var=var(x), Count=length(x)))
  T1
  write.csv(T1,file=paste0(i,"_withinID.csv"))
} 

这里我们需要循环遍历'scores'的unique值,aggregate应该基于数据

subset
for(i in unique(df1$scores)) {
    T1 <- aggregate(value ~ ID, subset(df1, scores == i), 
         function(x) c(Var = var(x), Count = length(x)))
   write.csv(T1, file = paste0(i, "_withinID.csv"))
}