【发布时间】:2015-01-15 05:33:00
【问题描述】:
输入数据
ID value
a 10
a 12
a 18
a 13
b 23
b 25
b 33
c 17
c 23
c 27
输出数据应该是这样的
ID value Diff
a 10 0
a 12 2
a 18 8
a 13 3
b 23 0
b 25 2
b 33 10
c 17 0
c 23 6
c 27 10
我从网上得到这个代码
library(data.table)
DT <- as.data.table(dat)
DT[, `:=`(DIFTIME, c(0, diff(as.Date(DATETIME)))), by = "ID"]
但这只会在两个连续行之间产生差异,而不是来自该组的第一个实例
dat<-structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L),
DATETIME = structure(c(1328346000,1328479200, 1331024400,1331025400, 1328086800, 1328184000, 1336287600, 1336424400),
class = c("POSIXct", "POSIXt"), tzone = ""),
VALUE = c(300L,150L, 650L, 450L, 855L, 240L, 340L, 240L)),
.Names = c("ID", "DATETIME","VALUE"), class = "data.frame", row.names = c(NA, 7L))
【问题讨论】:
标签: r dataframe plyr dplyr lapply