计算具有相邻值的行组之间的统计差异

时间:2018-12-11 00:23:24

标签: r data.table

我正在进行一些楔入式分析,并且想要一种方法来计算相邻时间段之间的差异统计量。我想出了一些适用于我的玩具示例的东西,但是有人知道从输入DT到所需输出DT的更有效方法吗?

type RemoveCommonParam<T extends {}> = {
  [TKey in keyof T]:
      T[TKey] extends (commonParam: string, ...args: infer TArgs) => unknown
      ? (...args: TArgs) => void
      : T[TKey]; 
}

1 个答案:

答案 0 :(得分:2)

1)一种可能的方法是使用非等额联接:

inputDT[, s:=step]
inputDT[
    desiredOutputDT,
    on=.(group=group2, s>=step1, s<=step2), nomatch=0L, allow.cartesian=TRUE,
    .(stat=statistic(
            independence_test(val ~ step, .SD))[1L]),
    by=.EACHI]

2)另一种方法是分别加入步骤1和步骤2,重新整理表并执行计算:

desiredOutputDT[, c("s1", "s2") := .(step1, step2)]
rbindlist(list(
    inputDT[desiredOutputDT, on=.(group=group2, step=step1)],
    inputDT[desiredOutputDT, on=.(group=group2, step=step2)]))[,
        .(stat=statistic(independence_test(val ~ step, .SD))),
        by=.(group, s1, s2)]

您还可以使用

创建desiredOutputDT
desiredOutputDT <- inputDT[, CJ(group2=group, step1=seq(max(step)-1L), unique=TRUE)][, 
    step2 := step1 + 1L]