time
、sid
、およびs.c
から への関数を説明する行がデータ テーブルにありませんcount
。
> dates.dt[1001:1011]
sid s.c count time
1: missing CLICK 104192 2013-05-25 10:00:00
2: missing SHARE 7694 2013-05-25 10:00:00
3: present CLICK 99573 2013-05-25 10:00:00
4: present SHARE 89302 2013-05-25 10:00:00
5: missing CLICK 28 2013-05-25 11:00:00
6: present CLICK 25 2013-05-25 11:00:00
7: present SHARE 15 2013-05-25 11:00:00
8: missing CLICK 104544 2013-05-25 12:00:00
9: missing SHARE 7253 2013-05-25 12:00:00
10: present CLICK 105891 2013-05-25 12:00:00
11: present SHARE 88709 2013-05-25 12:00:00
欠落している行は次のとおりです (1 番目と 2 番目の列の 2 つの値と各タイム スライスのそれぞれに行が必要です):
missing SHARE 0 2013-05-25 11:00:00
このような欠落している行を検出して復元するにはどうすればよいですか?
私がこれを発見した方法は、
library(data.table)
total <- dates.dt[, list(sum(count)) , keyby="time"]
setnames(total,"V1","total")
ts <- dates.dt[s.c=="SHARE" & sid=="missing", list(sum(count)) , keyby="time"]
cat("SHARE/missing:",nrow(ts),"rows\n")
stopifnot(identical(total$time,ts$time)) # --> ERROR!
total$shares.missing <- ts$V1
ts$time
これで、 andが異なる最初の場所を見つけて、そこに 0 行を挿入できると思いますtotal$time
が、これはかなり面倒なプロセスのようです。
ありがとう!