如何从天使用data.table
Variable A days stardate enddate(cumulative)
A 2 0 2
A 3 2 5
B 4 5 9
A 3 0 3
B 8 3 11
如何从天使用data.table
Variable A days stardate enddate(cumulative)
A 2 0 2
A 3 2 5
B 4 5 9
A 3 0 3
B 8 3 11
如果我理解正确的开始日期和结束日期(累计),你想要的日子+起始日期是在结束日期列这种情况下创建索引。然后,你可以简单地使用:
df <- data.table(Variable=c("A", "A", "B", "A", "B"), days=c(2,3,4,3,8), startdate=c(0,2,5,9,12), enddate=c(0))
df$enddate <- as.numeric(df$days + df$startdate)
使用的cumsum
和shift
组合:
dt1[, grp := cumsum(shift(Variable, fill='A')=='B')
][, startdate := cumsum(shift(days, fill = 0)), grp
][, enddate := startdate + days][]
这给:
> dt1
Variable days grp startdate enddate
1: A 2 0 0 2
2: A 3 0 2 5
3: B 4 0 5 9
4: A 3 1 0 3
5: B 8 1 3 11
使用的数据:
dt1 <- data.table(Variable = c("A","A","B","A","B"), days = c(2,3,4,3,8))
我猜你想要用实际的日期做到这一点?请确认。 –
你的问题从模糊开始,变得模糊。这是你想要的结果,至少那是我的假设。但是,当您进行第4天(第3行)和第2天(第1行)时,您无法在第1行获得开始日期0。改述你的问题。 –