Найти разницу в группе на основе условия - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть фрейм данных с такими записями, как;

V1 zipcode year V2 1 11747 2012 5 2 11747 2012 10 3 11747 2012 20 4 11747 2012 15 1 11000 2012 20 2 11000 2012 15 3 11000 2012 20

Я хочу найти разницу в V2 для максимального значения V1 для каждой комбинации года по почтовому индексу.В этом случае 15-5 и 20-20.

Я бы хотел, чтобы результат выглядел следующим образом:

V1 zipcode year V2 V3 1 11747 2012 5 10 2 11747 2012 10 10 3 11747 2012 20 10 4 11747 2012 15 10 1 11000 2012 20 0 2 11000 2012 15 0 3 11000 2012 20 0

Итак, я пытался использовать group byи мутировать со следующими условиями: df %>% group_by(year, zipcode) %>% mutate(difV2 = df[df$V1== max(df$V1),4] - df[df$V1== min(df$V1),4]) Любые советы будут с благодарностью!

1 Ответ

0 голосов
/ 28 ноября 2018

После group_by нам нужно использовать только имена столбцов вместо df$V1.Когда мы делаем df$V1, он извлекает весь столбец, а не значения, относящиеся к этой группе.

library(dplyr)
df %>% 
  group_by(year, zipcode) %>% 
  mutate(V3 = V2[V1== max(V1)] - V2[V1== min(V1)])
# A tibble: 7 x 5
# Groups:   year, zipcode [2]
#     V1 zipcode  year    V2    V3
#  <int>   <int> <int> <int> <int>
#1     1   11747  2012     5    10
#2     2   11747  2012    10    10
#3     3   11747  2012    20    10
#4     4   11747  2012    15    10
#5     1   11000  2012    20     0
#6     2   11000  2012    15     0
#7     3   11000  2012    20     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...