R Studio:使用条件逻辑平均多列

R Studio: Average multiple columns with conditional logic

在 R studio 中,如何通过其中一列的条件逻辑获得多列的平均值?例如,我有一个名为 'test' 的数据集,包含以下 5 列。我想获得 A、B 和 C 列的组合平均值。但我只想在 C 列中的某个单元格的 Flag 等于 1 时将 C 列包含在平均值中。

    ID<-c(1,2,3)
    A<-c(1,0,NA)
    B<-c(0,NA,1)
    C<-c(1,1,1)
    Flag<-c(0,1,1)
   test<-as.data.frame(cbind(ID,A,B,C,Flag))

[click here to see my data set]

所以我想要:平均值 =(A 列中的所有单元格 + B 列中的所有单元格 + 仅 C 列中标志列中的单元格等于 1 的单元格)

我们 unlist 具有列子集("A"、"B")的数据集,与对应于 "Flag" 的 "C" 的值连接的 1 并得到 mean.

mean(c(unlist(test[c("A", "B")]), test$C[test$Flag==1]), na.rm=TRUE)
#[1] 0.6666667