我有一个篮球运动员数据的数据表,其中包括每场比赛和多名球员的比赛日期。我想创建一个列来计算自上一场比赛以来的天数。我在 R 中使用 data.table 包。
PLAYERID GAME_DATE
1: 2989 2014-01-1
2: 2989 2014-01-3
我使用以下代码:
DT[, DAY_DIFF:=diff(GAME_DATE, lag=1), by=PLAYERID]
它返回:
PLAYERID GAME_DATE DAY_DIFF
1: 2989 2014-01-1 2
2: 2989 2014-01-3 2
它为除最后一行之外的每一行附加距离下一场比赛的天数。在最后一行中,它附加了自上一场比赛以来的天数,即我想要的值。我想把 NA 放在第一行,因为这是第一场比赛。
最佳答案
# Reproduce the data.table
DT <- fread("PLAYERID GAME_DATE\n2989 2014-01-1\n2989 2014-01-3")
DT[, GAME_DATE:=as.Date(GAME_DATE)]
# concatenate an NA to the front and use na.pad=FALSE with diff()
DT[, DAY_DIFF:=c(NA, diff(GAME_DATE, lag=1, na.pad=FALSE)), by=PLAYERID]
DT
# PLAYERID GAME_DATE DAY_DIFF
# 1: 2989 2014-01-01 NA
# 2: 2989 2014-01-03 2
关于r - 在 R data.table 中计算时间增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26079651/