Я сталкиваюсь с ошибкой в R при попытке зацикливания во времени. Вот подмножество моего фрейма данных (содержащего 120000 строк).
time value mean group
1 2017-01-01 12:00:00 0.507 0.5106533 NA
2 2017-01-01 12:05:00 0.526 0.5106533 NA
3 2017-01-01 12:10:00 0.489 0.5106533 NA
4 2017-01-01 12:15:00 0.598 0.5106533 NA
5 2017-01-01 12:20:00 0.564 0.5106533 NA
6 2017-01-01 12:25:00 0.536 0.5106533 NA
Допустим, я хочу создать группы на основе периода времени с ожидаемым результатом, подобным этому:
time value mean group
1 2017-01-01 12:00:00 0.507 0.5106533 A
2 2017-01-01 12:05:00 0.526 0.5106533 A
3 2017-01-01 12:10:00 0.489 0.5106533 B
4 2017-01-01 12:15:00 0.598 0.5106533 B
5 2017-01-01 12:20:00 0.564 0.5106533 C
6 2017-01-01 12:25:00 0.536 0.5106533 C
Я попробовал следующий код:
for (i in 1:length(merged.data$group)){
if (merged.data[as.POSIXlt(i)$time >= "2017-05-15 12:00:00 GMT" &
as.POSIXlt(i)$time <= "2017-05-29 12:00:00 GMT",]){
merged.data$group == "A"}
else if (merged.data[as.POSIXlt(i)$time >= "2017-08-11 12:00:00" &
as.POSIXlt(i)$time <= "2017-11-29 16:00:00",]){
merged.data$group == "B"}
else if (merged.data[as.POSIXlt(i)$time >= "2018-01-05 12:00:00" &
as.POSIXlt(i)$time <= "2018-02-16 16:00:00",]){
merged.data$group == "C"}
}
Я получаю следующую ошибку:
Error in as.POSIXlt.numeric(i) : 'origin' must be supplied
Не понимаю, я думал, что POSIXlt избавляется от проблем с происхождением? Хотя я признаю, что мое понимание проблем со временем в R немного сбивает с толку, и мне каждый раз приходится кодировать время, когда мне нужно иметь дело со временем / датами ...
Так что я надеюсь, что кто-то может мне помочь, не стесняйтесь, скажите мне, если я неясен или нужна дополнительная / лучшая информация, чтобы ответить на мой вопрос.
Спасибо заранее любителям стека!