Работать с несколькими строками кадра данных одновременно в R - PullRequest
0 голосов
/ 13 октября 2019

Я уверен, что кто-то задавал этот (очень простой) вопрос раньше, но я должен искать неправильную вещь, потому что не могу найти ответ:

Мне часто нужно выполнять операции, которые включаютобъединение данных из нескольких строк одного и того же кадра данных. Я знаю, как сделать это с помощью циклической конструкции, например,

for (i in 2:nrow(df)) { df$result[i] <- df$data[i] - df$data[i-1] }
for (i in 12:nrow(df)) { j <- i - 11; df$result[i] <- prod(df$data[j:i]) }

. Существует ли общее решение для этих типов операций, которое не включает циклы? Или цикл на самом деле лучший способ сделать это в R?

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

В базе R:

df$result[2:nrow(df)] = diff(df$data)
df$result2[13:nrow(df)] = diff(df$data,12)

Или dplyr:

df$result = dplyr::lag(df$data)
df$result2 = dplyr::lag(df$data, 12)
0 голосов
/ 13 октября 2019

Вы можете попытаться установить поднабор вашего фрейма данных, например:

for (i in 2:nrow[df]) { df$result[i] <- df$data[i] - df$data[i-1] }

становится:

df$result[2:nrow(df)] <- df$data[2:nrow(df)] - df$data[1:nrow(df)-1]

Примечание: nrow() - это функция AFAIK, поэтому вы должны вызывать ее, используякруглые скобки, а не квадратные скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...