R:如何使用dplyr创建一个参考值是动态的滞后?

时间:2018-02-12 15:54:19

标签: r dplyr lag

也许标题有点模糊,但我不知道如何更好地描述它。假设给出了下面的表/列:

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个月。这只是一个例子,最后我想将它应用于更多数据并使用数天而不是数月。我希望我能清楚自己的目标。

1 个答案:

答案 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。