如何從天使用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。改述你的問題。 –