在 R 中对多列使用 Diff()

Using Diff() in R for multiple columns

我想计算数据框中许多列的一阶差分而不明确命名它们。它适用于带有此代码的一列:

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])进行相同的计算?

我认为这符合您的要求:

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 来仅执行前两列或任何有效的列索引。