在R中对多个列使用Diff()

时间:2018-11-30 23:28:01

标签: r dataframe time-series diff

我想计算数据帧中许多列的一阶差,而无需明确命名它们。此代码适用于一列:

set.seed(1)
Data <- data.frame(
  X = sample(1:10),
  Y = sample(1:10),
  Z = sample(1:10))
 Newdata <- as.data.frame(diff(Data$X, lag = 1))

如何为数据帧中的许多列(例如[2:200])计算相同的值?

1 个答案:

答案 0 :(得分:2)

我认为这可以满足您的要求

as.data.frame(lapply(Data, diff, lag=1))
##    X  Y  Z
## 1  1 -1 -8
## 2  1  4  4
## 3  2  4 -5
## 4 -5 -5  8
## 5  6  2 -1
## 6  1  1 -1
## 7 -3 -4 -2
## 8  4 -3 -2
## 9 -9  8  1

由于数据帧是内部列表,因此我们可以lapply遍历这些列。您可以使用Data[1:2]而不是Data来进行前两列或任何有效的列索引。