вычитание значений по группам на тибле - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть простой тиббл, и я хочу вычислить абсолютную разницу значений после их группировки:

tibb <- tibble(id = c("A", "B", "C","A", "B", "C"), value = c(5,4,3,7,8,9))

# A tibble: 6 x 2
  id    value
  <chr> <dbl>
1 A         5
2 B         4
3 C         3
4 A         7
5 B         8
6 C         9

tibb %>% group_by(id) %>% summarize(diff = function(x,y){abs(x-y)})

dplyr вернет ошибку, заявив, что diff не поддерживается.

Вывод должен выглядетькак это:

# A tibble: 3 x 2
  id      sum
  <chr> <int>
1 A         2
2 B         4
3 C         6

Error in summarise_impl(.data, dots) : 
  Column `diff` is of unsupported type function

Есть ли способ рассчитать это?

1 Ответ

0 голосов
/ 19 сентября 2018

Если в каждой группе 2 значения, попробуйте следующее:

tibb <- tibble(id = c("A", "B", "C","A", "B", "C"), value = c(5,4,3,7,8,9))
tibb

tibb %>% group_by(id) %>% summarize(diff = abs(diff(value)))
#or
tibb %>% group_by(id) %>% summarize(diff = abs(value[1] - value[2]))
...