Я изучаю R, и мне нужно создать двухстороннюю таблицу из данных ниже:
> head(datanet)
Date & Time [Local] distance travelled
1: 18/06/2018 03:08 15.959366
2: 18/06/2018 03:12 22.535566
3: 18/06/2018 03:16 12.036834
4: 18/06/2018 03:20 18.738134
5: 18/06/2018 03:24 26.781879
6: 18/06/2018 03:28 8.341659
Мой желаемый результат должен выглядеть как в таблице ниже, с записью в столбце hour
, представляющей время дня (24 записи за 24 часа дня) и несколькими записями dist_tra on yyyy-mm-dd
со средним часовым расстоянием, пройденным за день за каждый час дня. Вот так:
head(dist.byHour[1:3])
hour dist_tra on 06/07/2018 dist_tra on 06/08/2018
1: 00 25.834355 29.388140
2: 01 NA 8.329956
3: 02 NA 31.506390
4: 03 33.464954 20.995957
5: 04 6.406513 17.035749
6: 05 28.254438 38.803171
Посмотрев онлайн и поговорив с некоторыми коллегами, я получил сценарий ниже. Однако при использовании cut()
:
появляется сообщение об ошибке.
library(tidyverse)
datanet$datehour <- cut(datanet[[1]], breaks = "hours")
dist.byHour <- aggregate(meters ~ datehour, datanet, mean, na.rm = TRUE)
dist.byHour$datehour <- as.POSIXct(dist.byHour$datehour)
dist.byHour$hour <- format(dist.byHour$datehour, "%H")
dist.byHour$datehour <- as.Date(dist.byHour$datehour)
dist.byHour <- dist.byHour[c(3, 1, 2)]
dist.byHour <- dist.byHour %>%
spread(datehour, -hour)
names(dist.byHour)[-1] <- paste("dist_tra on", names(dist.byHour)[-1])
Ошибка:
> datanet$datehour <- cut(datanet[[1]], breaks = "hours")
Error in cut.default(datanet[[1]], breaks = "hours") :
'x' must be numeric
Есть идеи, как это исправить? Это важное задание, над которым я работаю, поэтому любая помощь будет очень признательна!