Вычитание значения определенной строки из других значений в dplyr group_by () tbl - PullRequest
0 голосов
/ 17 мая 2018

Написание названия для этого было сложнее, чем ожидалось.

У меня есть данные, которые выглядят так:

   scenario type value
1         A    U   922
2         A    V   291
3         A    W   731
4         A    X   970
5         A    Y   794
6         B    U   827
7         B    V    10
8         B    W   517
9         B    X    97
10        B    Y   681
11        C    U    26
12        C    V   410
13        C    W   706
14        C    X   865
15        C    Y   385
16        D    U   473
17        D    V   561
18        D    W   374
19        D    X   645
20        D    Y   217
21        E    U   345
22        E    V    58
23        E    W   437
24        E    X   106
25        E    Y   292

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

  scenario type value
1        A    U   191
2        A    V  -440
3        A    W     0
4        A    X   239
5        A    Y    63

... и т. Д.

Полагаю, я могу использовать dplyr::group_by() и mutate(), но я не уверен, что добавить в команду mutate

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете сделать это с помощью dplyr.В функции mutate вы можете просто запросить which с типом "W" и затем вычесть его из исходного значения.

library(dplyr)
df %>% group_by(scenario) %>% mutate(value = value - value[which(type == "W")])
# A tibble: 25 x 3
# Groups: scenario [5]
#   scenario type  value
#   <fct>    <fct> <int>
# 1 A        U       191
# 2 A        V      -440
# 3 A        W         0
# 4 A        X       239
# 5 A        Y        63
# 6 B        U       310
# 7 B        V      -507
# 8 B        W         0
# 9 B        X      -420
#10 B        Y       164
## ... with 15 more rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...