小编Cak*_*ake的帖子

"循环"data.table来计算条件平均值

我想"遍历"data.table的行并计算每行的平均值.平均值应根据以下机制计算:

  1. 在第i行查找标识符ID(ID(i))
  2. 在第i行中查找T2的值(T2(i))
  3. 计算满足以下两个标准的Data1所有行中的值的平均值j:ID(j) = ID(i)T1(j) = T2(i)
  4. 在第i行的Data2列中输入计算的平均值

     DF = data.frame(ID=rep(c("a","b"),each=6), 
                 T1=rep(1:2,each=3), T2=c(1,2,3), Data1=c(1:12))
     DT = data.table(DF)
     DT[ , Data2:=NA_real_]
         ID T1 T2  Data1 Data2
    [1,]  a  1  1     1    NA
    [2,]  a  1  2     2    NA
    [3,]  a  1  3     3    NA
    [4,]  a  2  1     4    NA
    [5,]  a  2  2     5    NA
    [6,]  a  2  3     6    NA
    [7,]  b  1  1     7    NA
    [8,]  b  1  2     8 …
    Run Code Online (Sandbox Code Playgroud)

r data.table

11
推荐指数
1
解决办法
4576
查看次数

根据类别按日期计算累积产品

我想在data.table中添加一个新列,其中包含Data1基于的累积产品Date.应为每个类别(Cat)计算累积产品,并应从最新的可用产品开始Date.

样本数据:

     DF = data.frame(Cat=rep(c("A","B"),each=4), Date=rep(c("01-08-2013","01-07-2013","01-04-2013","01-03-2013"),2), Data1=c(1:8))
     DF$Date = as.Date(DF$Date , "%m-%d-%Y")
     DT = data.table(DF)
     DT[ , Data1_cum:=NA_real_]
     DT

        Cat      Date Data1 Data1_cum
     1:  A 2013-01-08     1    NA
     2:  A 2013-01-07     2    NA
     3:  A 2013-01-04     3    NA
     4:  A 2013-01-03     4    NA
     5:  B 2013-01-08     5    NA
     6:  B 2013-01-07     6    NA
     7:  B 2013-01-04     7    NA
     8:  B 2013-01-03     8    NA
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

        Cat      Date Data1 Data1_cum
     1:  A 2013-01-08     1 …
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
1510
查看次数

标签 统计

data.table ×2

r ×2