Сдвиг нескольких столбцов вниз на одну строку в R - PullRequest
0 голосов
/ 01 апреля 2020

В моем наборе данных есть количество столбцов, и мне нужно сместить столбцы 18: 101 на одну строку. До сих пор я обнаружил, что эта команда в другом потоке полезна, и ниже я применяю ее к своим данным:

data.xts$AR2_Forecast <- transform(data.xts$AR2_Forecast, AR2_Forecast = c(NA, AR2_Forecast[-nrow(data.xts$AR2_Forecast)]))

Однако, поскольку у меня есть 83 дополнительных столбца, изменение имен будет довольно трудоемким. Могу ли я использовать что-нибудь, что сэкономило бы мне время?

Я думал о чем-то вроде:

data.xts[18:101]<-

, но я не уверен, как должна выглядеть функция преобразования. Класс моих данных - «xts», «zoo».

Спасибо за любые отзывы!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Вы можете использовать тот же подход, что и для одного столбца, например:

df[, 18:101] <- rbind(rep(NA, 101-17), df[seq_len(nrow(df)-1), 18:101] )

Редактировать: Для xts, попробуйте:

df[, 18:101] <- rbind(rep(NA, 101-17), coredata(df[1:(nrow(df)-1), 18:101] ))
0 голосов
/ 01 апреля 2020

Я думаю, что вы можете использовать dplyr :: select () вместе с dplyr :: lag (), чтобы сделать это более эффективно.

...