Длинный к короткой с манипулированием данными в r с 2 штуками id - PullRequest
0 голосов
/ 04 марта 2019

В наборе данных ra, как показано ниже, я хочу создать переменную, предшествующую минус посту.Мне нужно будет сделать некоторые вычисления по идентификатору, а затем по группе, поэтому я хочу оставить оба.

Оригинал

 ID   group      time    value   
 1      A        prior    8     
 1      A        post     5     
 2      A        prior    4     
 2      A        post     7     
 3      B        prior    3     
 3      B        post     10    
 4      B        prior    5
 4      B        post     6

Требуемые данные

  ID      group   new_value     
  1         A        -3          
  2         A         3         
  3         B         7         
  4         B         1 

Я думаю, чтобы добраться туда, мне нужно, чтобы мои данные были такими

 ID       group      value_prior      value_post
  1         A         8                  5
  2         A         4                  7
  3         B         3                  10
  4         B         5                  6

НоЯ не уверен, как туда добраться, сохранив ID и группу.

1 Ответ

0 голосов
/ 04 марта 2019

Если ваши данные уже отсортированы, вы можете использовать:

aggregate(value ~ ID + group, df, diff)

  ID group value
1  1     A    -3
2  2     A     3
3  3     B     7
4  4     B     1

или:

library(dplyr)
df %>%
  group_by(ID, group) %>%
  summarise(new_value = diff(value))
...