R 根据条件计算累积平均值

R 根据条件计算累积平均值,r,data.table,R,Data.table,我有一个这样的数据表 a <- data.table( A = c(1:6), B = c(1,2,2,3,4,2), C = c("t","t","f","t","f","t") ) A B C 1: 1 1 t 2: 2 2 t 3: 3 2 f 4: 4 3 t 5: 5 4 f 6: 6 2 t 我该怎么做呢?你是说累计平均数吗?那么这应该满足您的要求: a[C != "f", lapply(.SD, FUN = function(x) {cums

我有一个这样的数据表

a <- data.table(
    A = c(1:6),
    B = c(1,2,2,3,4,2),
    C = c("t","t","f","t","f","t")
)
   A B C
1: 1 1 t
2: 2 2 t
3: 3 2 f
4: 4 3 t
5: 5 4 f
6: 6 2 t 

我该怎么做呢?

你是说累计平均数吗?那么这应该满足您的要求:

a[C != "f", lapply(.SD, FUN = function(x) {cumsum(x) / seq_along(x)}), 
  .SDcols = c("A", "B")]

          A   B
1: 1.000000 1.0
2: 1.500000 1.5
3: 2.333333 2.0
4: 3.250000 2.0

那么你的预期结果是什么?@Jimbou这是一个数据表。你的预期结果没有意义。请添加您使用的公式。为什么第5:6行的值是3.5和3?根据你的描述,应该是2.333和2。当你甚至没有用这个答案来评论你的问题时,投反对票有什么意义?根据OP提供的信息,这是他/她要求的。对我来说,如果OP发布预期的输出,那会更好。顺便说一句,这是我的意思dplyr@akrun我已经否决了很多答案,并且经常会评论为什么,我还没有得到报复性的否决票,所以我怀疑这是一个实际的问题。对不起,这不是我期望的答案。这是因为我的措辞不好。在每一行,我希望我们计算所有前一行的总和,但不包括c==f的行。我会更新这些问题though@mathias,你可以查看我的问题更新,非常感谢
a[C != "f", lapply(.SD, FUN = function(x) {cumsum(x) / seq_along(x)}), 
  .SDcols = c("A", "B")]

          A   B
1: 1.000000 1.0
2: 1.500000 1.5
3: 2.333333 2.0
4: 3.250000 2.0