【发布时间】:2020-09-25 18:11:36
【问题描述】:
当同一会话的第一个 timestamp 与后续 timestamp 记录之间的差异超过 10 个单位时,我想在 session 列中添加 1。
换句话说:
如果同一会话中timestamp 列中的间隙大于 10,则为特定 ID 的其余会话添加 1。所以我们不应该有相同的session,其记录中的差距超过10。
让我们说:
df<-read.table(text="
ID timestamp session
1 10 1
1 12 1
1 15 1
1 21 1
1 25 1
1 27 2
1 29 2
2 11 1
2 22 2
2 27 2
2 32 2
2 42 2
2 43 3",header=T,stringsAsFactors = F)
在上面的示例中,对于ID==1,第 4 行中的会话间隔 (timestamp==10) 大于 10 (timestamp==21),因此我们将其余会话加 1。每当会话数发生变化时,同一个会话中时间戳的第一条记录的差值应小于10,否则应添加到会话中。
result:
ID timestamp session
1 *10 1
1 12 1
1 15 1
1 *21 2 <-- because 21-10 >= 10 it add 1 to the rest of sessions in this ID
1 25 2
1 27 3
1 29 3
2 11 1
2 *22 2
2 27 2
2 *32 3 <-- because 32-22>= 10 it add 1 to the rest of session
2 *42 4 <-- because 42-32>=10
2 43 5
如何在 R 中做到这一点?
【问题讨论】:
-
与第一个戳记的差值大于10的所有值是否必须加1?
-
第二组第一个时间戳也是11,为什么用22?
-
@Duck 是的,与第一个值的区别是它们具有相同的会话数。关于你的第二个问题,它仍然是 11。22 是第二个时间戳。
标签: r