在 R 中的两列中创建一个数字序列

Create a sequence of numbers in two columns in R

给定数据框中的两个数字列,遵循一个序列:

df = data.frame(year=c(2000,2000,2000,2001,2001,2001,2002,2002,2002,2003),
                period=c(1,2,3,1,2,3,1,2,3,1))

此数据框的规则是,每当第二列 period 达到最大值(在本例中为 3)时,第一列 year 总和为 1。

通过一个函数或库,如何才能按照顺序提前一些步骤? ,例如 3.

为了清楚起见,此序列的预期输出,每列中的以下 3 个数字为:

output = data.frame(year=c(2003,2003,2004),
                    period=c(2,3,1))

这在很大程度上取决于您的数据,您必须为特定序列拟合特定公式,因为该序列可能采用的路径有无限多种。话虽如此,这里有一种不太漂亮的方法可以达到您想要的结果。

df$time=seq_along(df$year)

n=6

mod=lm(year~time,data=df)
pre=round(predict(mod,data.frame(time=(nrow(df)+1):(nrow(df)+n))))
pre
   1    2    3    4    5    6 
2003 2003 2004 2004 2004 2005

mod2=lm(period~year+time,data=df)
predict(mod2,data.frame(year=pre,time=(nrow(df)+1):(nrow(df)+n)))
1 2 3 4 5 6 
2 3 1 2 3 1

根据您的整体项目,也许您可​​以直接生成数据:

expand.grid(period = 1:3,
            year = 2000:2004)