В качестве альтернативы expand.grid(id = s$id, time = t)
, вы можете также использовать CJ
(Cross Join) из data.table
пакета:
CJ(s$id,t)
, который дает:
V1 V2
1: 901 2015-09-19 14:52:23
2: 901 2015-09-19 14:53:23
3: 901 2015-09-19 14:54:23
4: 901 2015-09-19 14:55:23
5: 901 2015-09-19 14:56:23
---
596: 910 2015-09-19 15:47:23
597: 910 2015-09-19 15:48:23
598: 910 2015-09-19 15:49:23
599: 910 2015-09-19 15:50:23
600: 910 2015-09-19 15:51:23
Если вы хотите добавить, что s
, вы можете выполнить следующую операцию соединения:
s <- setDT(s, key="id")[CJ(s$id,t)]
, которая дает:
> s
id V2
1: 901 2015-09-19 15:08:39
2: 901 2015-09-19 15:09:39
3: 901 2015-09-19 15:10:39
4: 901 2015-09-19 15:11:39
5: 901 2015-09-19 15:12:39
---
596: 910 2015-09-19 16:03:39
597: 910 2015-09-19 16:04:39
598: 910 2015-09-19 16:05:39
599: 910 2015-09-19 16:06:39
600: 910 2015-09-19 16:07:39
Другой вариант заключается в использовании crossing
-функции из tidyr
:
library(tidyr)
crossing(id = s$id, time = t)
, который дает аналогичный результат.
Возможно, 'expand.grid (id = s $ id, time = t)' – akrun