Создать переменную отставания в группе относительно базовой линии - PullRequest
0 голосов
/ 12 июня 2019

Мне нужна переменная с отставанием от базовой группы. У меня есть данные панели, которые я сбалансировал.

my_data <- data.frame(id = c(1,1,1,2,2,2,3,3,3), group = c(1,2,3,1,2,3,1,2,3), score=as.numeric(c(0,150,170,80,100,110,75,100,0)))

  id group score
1  1     1     0
2  1     2   150
3  1     3   170
4  2     1    80
5  2     2   100
6  2     3   110
7  3     1    75
8  3     2   100
9  3     3     0

Я бы хотел, чтобы это выглядело так:

  id group score lag_diff_baseline
1  1     1     0                NA
2  1     2   150               150
3  1     3   170               170
4  2     1    80                NA
5  2     2   100                20
6  2     3   110                30
7  3     1    75                NA
8  3     2   100                25
9  3     3     0               -75

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Версия data.table ответа @ Лиама

library(data.table)
setDT(my_data)
my_data[,.(id,group,score,lag_diff_baseline = score-first(score)),by = id] 
0 голосов
/ 12 июня 2019

Я пропустил простой ответ, публикуя здесь, потому что я не нашел его на SO.

my_data %>% 
  group_by(id) %>%
  mutate(lag_diff_baseline = score - first(score))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...