Это второй раз, когда я публикую сообщения относительно того же набора данных. На этот раз у меня возникли проблемы с использованием функции ceiling_date
из пакета lubridate
.
Вот образец моего набора данных:
> head(dataraw)
Time ACTIVITY_X ACTIVITY_Y ACTIVITY_Z
1: 6/19/18 10:40:00 60 74 95
2: 6/19/18 10:41:20 62 63 88
3: 6/19/18 10:42:40 60 56 82
4: 6/19/18 10:44:00 66 61 90
5: 6/19/18 10:45:20 60 53 80
6: 6/19/18 10:46:40 57 40 70
7: 6/19/18 10:48:00 54 41 68
8: 6/19/18 10:49:20 52 49 71
9: 6/19/18 10:50:40 61 49 78
10: 6/19/18 10:52:00 93 32 98
11: 6/19/18 10:53:20 80 54 97
12: 6/19/18 10:54:40 73 39 83
13: 6/19/18 10:56:00 47 37 60
14: 6/19/18 10:57:20 51 55 75
15: 6/19/18 10:58:40 51 60 79
16: 6/19/18 11:00:00 14 13 19
17: 6/19/18 11:01:20 0 0 0
18: 6/19/18 11:02:40 13 3 13
19: 6/19/18 11:04:00 20 10 22
20: 6/19/18 11:05:20 13 6 14
И вот как я хотел бы преобразовать свои данные:
Time x y z
1: 2018-06-19 10:40:00 60 74 95
2: 2018-06-19 10:44:00 188 180 260
3: 2018-06-19 10:48:00 171 134 218
4: 2018-06-19 10:52:00 206 130 247
5: 2018-06-19 10:56:00 200 130 240
6: 2018-06-19 11:00:00 116 128 173
7: 2018-06-19 11:04:00 33 13 35
8: 2018-06-19 11:08:00 13 6 14
Где время берется каждые 240 секунд (4 минуты) вместо 80 секунд (1:20 минут), как в dataraw
. Значения ACTIVITY_X
, ACTIVITY_Y
и ACTIVITY_Z
суммируются для соответствия более длинному 4-минутному интервалу.
Ниже приведен код, который я использовал для этого вопроса. Это работает для примера, который я выложил, но при использовании полного набора данных dataraw
у меня появляются предупреждающие сообщения и ошибки, как показано ниже:
> sampleinput<-na.omit(dataraw)
> names(sampleinput)[1]<-"Time"
> sampleinput$Time <- as.numeric(as.character(sampleinput$Time))
Warning message:
NAs introduced by coercion
> X <- data.table(sampleinput)
> X$tgroup <- lubridate::ceiling_date(X$Time, '4 mins')
Error in UseMethod("reclass_date", orig) :
no applicable method for 'reclass_date' applied to an object of class "c('double', 'numeric')"
> X[, list( x = sum(ACTIVITY_X),
+ y = sum(ACTIVITY_Y),
+ z =sum(ACTIVITY_Z) ), by = list (tgroup)]
Error in eval(bysub, x, parent.frame()) : object 'tgroup' not found
Это относится к синтаксису или ошибкам кодирования? Если это поможет, полный набор данных dataraw
доступен здесь , так как он слишком велик, чтобы его можно было разместить как dput()
Любая помощь приветствуется!