R: вычитание первой строки из себя и последующих строк из следующей строки в столбце и сделать это для нескольких столбцов - PullRequest
0 голосов
/ 12 января 2019

У меня есть много групп в моем DF с данными временных рядов, которые не начинаются с 0. Я хотел бы нормализовать свои данные, установив значения в первой строке каждой группы на 0, так что FrameTime и связанные значения все установлены до 0. Для этого мне нужно вычесть значение первой строки из себя, а затем вычесть значение следующей строки из следующей строки, и так далее, и так далее. Я хотел бы функцию, которая позволяет мне делать это для многих столбцов, таких как mutate_at ().

Я пытался

tmp2 <- tmp %>%
  group_by(Name,StimulusName) %>%
  mutate_at(8:37, funs(c(first(.), (. - first(.))[-1])) )

но это вычитает значение первой строки из всех других строк, а не точно то, что мне нужно.

1 Ответ

0 голосов
/ 12 января 2019

Вы хотите использовать функцию запаздывания dplyr, чтобы получить значение предыдущего ряда. В функции задержки вы хотите установить значение по умолчанию для первого значения, используя первую функцию dplyr. Я создал пример ниже:

library(dplyr)
example.data <-
  data.frame(a = c(1, 3, 6, 2, 4 ,7),
             b = c("red", "red", "red", "blue", "blue", "blue"))

example.data %>%
  group_by(b) %>%
  mutate(c = a - lag(a, n = 1, default = first(a)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...