如何在数据框行中重复添加值?

时间:2017-02-24 09:53:08

标签: r dataframe recurrence

我用一个小日期框架来说明我的问题,例如:

   X1 X2 X3
1   0  1  2
2   0  1  3
3   0  1  4
4   0  2  3
5   0  2  4
6   0  3  4
7   1  2  3
8   1  2  4
9   1  3  4
10  2  3  4

(真正的行会有很多行...)
我必须使用 12个附加值扩展此数据框的每一行,考虑到已存在的3个值是由递归等式定义的系列的3个起始项:

U(n) = U(n-1) - Min(U(n-2), U(n-3))

例如考虑第一行0,1,2。下一个术语(第4个)必须是:

2 - Min(1, 0) = 2 - 0 = 2

等。最后,我的第一行将是:

0 1 2 2 1 -1 -2 -1 1 3 4 3 0 -3 -3

我必须在初始数据框的每一行重复此操作。当然,我知道我可以使用复杂的循环“for {***}”来做到这一点,但这很耗时。

有没有办法逐列构建最终数据框? (我的意思是不列出行,而是基于递推方程一次构造整列)

1 个答案:

答案 0 :(得分:0)

你不必写一个复杂的循环'并逐行工作。您只需编写一个简单的循环并逐列计算,例如:

# recreate the sample dataframe
data <- data.frame(x1 = c(rep(0, 6), 1,1,1,2),
                   X2 = c(1,1,1,2,2,4,2,2,3,3),
                   X3 = c(2,3,4,3,4,4,3,4,4,4))

# create placeholder dataframe full of zeros
temp <- data.frame(matrix(data = 0, nrow = 10, ncol = 15))

# write the original dataframe into the placeholder dataframe
temp[, 1:3] <- data

# for columns 4 to 15 in the placeholder dataframe
for(i in 4:15)
{
        # calculate each column based on the given formula
        temp[, i] <- temp[, i-1] - pmin(temp[,i-2], temp[, i-3])
}