我有一个数据框,包含行中的唯一条目,前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")
答案 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)