Группировка по, поворот, счет и сумма в DF в R - PullRequest
0 голосов
/ 08 мая 2019

У меня есть рамка даты с полями PARTIDA (дата), Operação (коэффициент 4 уровня) и TT (числовой).

nenter image description here

Мне нужно сгруппировать по столбцу PARTIDA, повернуть столбец Операция, считая частоту каждого уровня, и суммировать столбец TT. Как это:

enter image description here

Я уже что-то пробовал с dplyr, но не смог получить этот результат, кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Аналогично ответу @ cardinal40, но я пытаюсь ограничить количество объектов, добавляемых в мою среду, когда это возможно.Любой ответ сделает свое дело.

df %>% 
  group_by(partida) %>% 
  mutate(tt = sum(tt)) %>% 
  group_by(partida, operacao, tt) %>% 
  count() %>% 
  ungroup() %>% 
  spread(operacao, n) %>% 
  mutate_if(is.numeric, replace_na, 0)

0 голосов
/ 08 мая 2019

Вот двухэтапный процесс, который может дать вам то, что вы хотите:

library(dplyr)

df <- 
  tibble(
    partida = c("date1", "date2", "date3", "date1", "date2"),
    operacao = c("D", "J", "C", "D", "M"),
    tt = c(1, 2, 3, 4, 5)
  )

tt_sums <- 
  df %>% 
  group_by(partida) %>% 
  count(wt = tt)

operacao_counts <-
  df %>% 
  group_by(partida, operacao) %>% 
  count() %>% 
  ungroup() %>% 
  spread(operacao, n) %>% 
  mutate_if(is.numeric, replace_na, 0)

final_df <-
  operacao_counts %>% 
  left_join(tt_sums, by = "partida")

> final_df
# A tibble: 3 x 6
  partida     C     D     J     M     n
  <chr>   <dbl> <dbl> <dbl> <dbl> <dbl>
1 date1       0     2     0     0     5
2 date2       0     0     1     1     7
3 date3       1     0     0     0     3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...