也许标题有点模糊,但我不知道如何更好地描述它。假设给出了下面的表/列:
tab0 <- data.frame(month = c(1, 3, 4, 7, 9, 12))
使用dplyr我想要达到的目标如下表所示:
tab1 <- data.frame(month = c(1, 3, 4, 7, 9, 12), group = c(1, 1, 2, 3, 3, 4))
以一定的方式将一个月分配给一个组,使得最长时间滞后(一组内)为2个月。这只是一个例子,最后我想将它应用于更多数据并使用数天而不是数月。我希望我能清楚自己的目标。
答案 0 :(得分:1)
# example dataframe
tab0 <- data.frame(month = c(1, 3, 4, 7, 9, 12))
# input your lag
lag = 2
# create group
tab0$group = 1 + (tab0$month - tab0$month[1]) %/% (lag + 1)
# see updated daatset
tab0
# month group
# 1 1 1
# 2 3 1
# 3 4 2
# 4 7 3
# 5 9 3
# 6 12 4
组号的计算方法如下:对于每一行,我们得到当月和第一个月之间的距离。然后我们将结果除以3(你的滞后2加1)并保持除法的整数部分。最后,我们在结果中加1。