Использование Diff () в R для нескольких столбцов - PullRequest
0 голосов
/ 01 декабря 2018

Я хотел бы рассчитать разницу первого порядка для многих столбцов во фрейме данных, не называя их явно.Он хорошо работает с одним столбцом с этим кодом:

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 голосов
/ 01 декабря 2018

Я думаю, что это то, что вы хотите:

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, чтобы просто выполнить первые два столбца или любую допустимую индексацию столбцов.

...