Я хочу рассчитать среднее значение Dist
на каждую неделю, используя эти данные (см. Ниже), сохраняя при этом преимущества использования класса времени POSIXct
.изменение POSIXct date vaules до первого дня каждой недели
df <- structure(list(IndID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "AAA"),
Date = structure(c(1329436800, 1329458400, 1329480000, 1329501600,
1329523200, 1329544800, 1329566400, 1329588000, 1329609600,
1329631200, 1329652800, 1329674400, 1329696000, 1329717600,
1329739200, 1329760800, 1329782400, 1329804000, 1329825600,
1329847200, 1329868800, 1329890400, 1329912000, 1329933600,
1329955200, 1329976800, 1329998400, 1330020000, 1330041600,
1330063200, 1330084800, 1330106400, 1330128000, 1330149600,
1330171200, 1330192800, 1330214400, 1330236000, 1330257600,
1330279200, 1330300800, 1330322400, 1330344000, 1330365600,
1330387200, 1330408800, 1330430400, 1330452000, 1330473600,
1330495200), class = c("POSIXct", "POSIXt"), tzone = ""),
Dist = c(3.85567120344727, 52.2649622620809, 1043.61207930222,
1352.58506343616, 176.911523081261, 77.8266318470078, 50.3943567710686,
296.753649985307, 70.5826583995618, 166.394264991861, 251.745346701973,
295.70655057823, 44.6664731663839, 11.1539274078084, 124.578071475754,
757.728373470112, 83.0921234152083, 36.6820839851181, 29.1406161870034,
150.442928003814, 66.0957159105813, 2.23839297570488, 184.88312900824,
513.072526047611, 132.868335201626, 8.09274857805967, 284.479977841835,
479.358187122796, 297.273840894826, 4.00676616275076, 601.492189218489,
249.001525522847, 108.007775719885, 2.38435966274261, 604.365702677913,
1499.59076416313, 111.74722960012, 25.3528529967124, 280.057754683142,
428.157539641219, 70.0365608334965, 71.0886617898624, 265.823654634254,
380.247565078552, 188.857338305481, 9.24402933768915, 120.346786301264,
221.904294953242, 201.086079767386, 81.7857577639103), DoW = c(5,
5, 6, 6, 6, 6, 7, 7, 7, 7, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3,
3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 1,
1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)), .Names = c("IndID", "Date",
"Dist", "DoW"), row.names = c(NA, -50L), class = "data.frame")
> head(df)
IndID Date Dist DoW
1 AAA 2012-02-16 17:00:00 3.855671 5
2 AAA 2012-02-16 23:00:00 52.264962 5
3 AAA 2012-02-17 05:00:00 1043.612079 6
4 AAA 2012-02-17 11:00:00 1352.585063 6
5 AAA 2012-02-17 17:00:00 176.911523 6
6 AAA 2012-02-17 23:00:00 77.826632 6
Моя мысль была использовать plyr
пакет в среднем Dist
на неделю и хотел сначала создать новый WeekDate
поле, содержащее дату, за исключением времени, в первый день каждой недели. Как видно в поле DoW (День недели), данные не всегда начинаются в первый день недели.
Хотя я не могу соединить точки, я хочу, чтобы min Date исключая h: m: s) для каждой последовательной недели (DoW 1-7).
Ряды 1:10 будет 2012-02-16, Ряды 11:38 будет 2012-02-19, Ряды 39:50 будет 2012-02-26
Я подозреваю, что lubridate
пакет будут полезны, но не могут получить правильный код.
Любые предложения или альтернативные методы для конкретного создания столбца новой даты или более широкого усреднения Dist на каждую неделю будут оценены.
Perfect. с радостью принял бы ответ. Благодаря! –