数据帧减去列功能

时间:2015-04-07 22:07:54

标签: r dataframe

我有一个数据框,包含行中的唯一条目,前8列中每个条目的描述性特征,以及之后列中的每周价格。我想创建一个新的数据框,显示相同的结构,非描述性列中的价格每周都有差异。

因此,例如,第9列现在将显示(第2周价格 - 第1周价格),而不是当前的第1周价格。我无法弄清楚如何迭代并想知道是否有必要进行迭代。我正在尝试应用seq_len,但对该功能不太熟悉。

感谢您的帮助。

编辑:下面是示例数据帧。我希望的输出是第二个结构。

structure(list(s = structure(1:3, .Label = c("aa", "bb", "cc"
), class = "factor"), w1 = c(3, 4, 5), w2 = c(55, 2, 1), w3 = c(52, 
9, 3)), .Names = c("s", "w1", "w2", "w3"), row.names = c(NA, 
-3L), class = "data.frame")

structure(list(s = structure(1:3, .Label = c("aa", "bb", "cc"
), class = "factor"), w1d = c(NA, NA, NA), w2d = c(52, -2, -4
), w3d = c(-3, 7, 2)), .Names = c("s", "w1d", "w2d", "w3d"), row.names = c(NA, 
-3L), class = "data.frame")

1 个答案:

答案 0 :(得分:1)

从数据框中提取数字列[2:4],然后按行应用diff

d <- t(apply(df1[2:4], 1, diff))
     w2 w3
[1,] 52 -3
[2,] -2  7
[3,] -4  2

将其与数据的非数字列相结合

df2 <- cbind(df1[1], d)