Я пытаюсь автоматизировать присвоение номера группы по периодам времени. Потому что я пишу функцию для агрегирования временных рядов данных о погоде по различным периодам времени, определенным пользователем. Давайте назовем «n» числом подпериодов
d1 = seq(as.Date("1910/1/1"), as.Date("1910/1/20"), "days")
d2 = seq(as.Date("1911/2/4"), as.Date("1911/2/27"), "days")
id1 = rep("1", length(d1))
id2 = rep("2", length(d2))
df = data.frame(date = c(d1,d2), id = c(id1,id2))
df
Я хотел бы разделить мои даты на число «n» периодов и добавить номер периода в каждую строку моего фрейма данных: что-то вот так, если я хочу периоды в 4 дня:
df$period = c(rep(c(1:4), each = length(d1)/4), rep(c(1:4), each = length(d2)/4))
df
У меня разные даты для каждого идентификатора в моем наборе реальных данных. Вот почему я хочу создать первые группы с одинаковым размером и последнюю с остальными.
Давайте представим, что мне нужны четвертые периоды: я написал это, но это возвращает мне только «4»:
df2 =df %>%
group_by(date,id) %>%
mutate(period = c(rep(seq(1,4-1, by = 1), each = as.integer(length(date)/4)),
rep(4, length(date)-((4-1)*as.integer(length(date)/4)))))
df2
У кого-нибудь есть идея?
@ hammoire:
Итак, для примера для первого идентификатора у меня есть 20 дат, и если я хочу разрезать его на 3 периода: c (1,1,1,1, 1,1,2,2,2,2,2,2,3,3,3,3,3,3,3)
Спасибо