首页 > 解决方案 > 强制 .GRP 计数器从 data.table 中的 2 而不是 1 开始

问题描述

如何强制 data.table 中的 .GRP 从 2 而不是 1 开始组计数器?

我有一个 data.table ,其中包含我想按组顺序排序的组。

example_data.table <- data.table(Var1 = c(1,2,2,4,5,5,5), Var2 = c(1,2,3,7,1,2,3) )

在此处输入图像描述

当我使用 .GRP 计数器时,它以第一个组合作为 conter 1 开始。

Group_table   <- setDT(example_data.table)[, label := .GRP, by = c("Var1", "Var2" )]

在此处输入图像描述

但我想将Var1值为4Var2值为7的组设置为计数器值 1,然后是下一个。

在此处输入图像描述

如何使用 .GRP 以使Var14Var27将一个计数器作为1并将其他计数器作为下一个顺序?

所以,我在想的是手动给 counter 作为 1 所需的组合,而其他人则从 2 开始计数器。还有其他方法,但我有点困惑。

标签: rdata.table

解决方案


如果您只有一个带有 的条目Var1 = 4 & Var2 = 7,那么您可以从 中删除该条目.GRP,并使用replace1 替换它,即

library(data.table)

dt1[-(which(dt1$Var1 == 4 & dt1$Var2 == 7)), Counter := .GRP + 1, by = c('Var1', 'Var2')][, 
                                                Counter := replace(Counter, is.na(Counter), 1)][]

这使,

   Var1 Var2 Counter
1:    1    1       2
2:    2    2       3
3:    2    3       4
4:    4    7       1
5:    5    1       5
6:    5    2       6
7:    5    3       7

推荐阅读