Как добавить вторичную сводку ранее сгруппированных / обобщенных данных для целей сортировки в R с помощью dplyr - PullRequest
3 голосов
/ 04 июня 2019

Я строю две группы - до и после
В каждой группе есть 2 уровня - вверх, вниз
Для каждого уровня, который я вычислил, сводная статистика, количество

Я пытаюсь создать новыйитоговая статистика, которая представляет собой общее количество каждого уровня в базе данных, new_count

new_count будет использоваться для упорядочения уровней при построении графика

, здесь находится исходный df

group   level
before  up
before  up
before  up
before  up
before  down
before  down
before  down
before  down
before  down
before  down
before  down
before  down
after   up
after   up
after   up
after   up
after   up
after   up
after   down
after   down
after   down

вот исходный вывод

group   level   count   
before  up      4       
before  down    8       
after   up      6       
after   down    3       

вот как должен выглядеть окончательный вывод

group   level   count   new_count
before  up      4       10
before  down    8       11
after   up      6       10
after   down    3       11

мой код

df %>% group_by(group, level) %>% summarize(count = n())

можно ли что-то сделатькак вложенное резюме?

df %>% group_by(group, level) %>% 
           summarize(count = n(),
                     new_count = group_by(level) %>%
                                 summarize(new_count = n()))

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Одна возможность может быть:

df %>%
 add_count(level) %>%
 group_by(group, level) %>%
 summarise(count = n(),
           new_count = first(n))

  group  level count new_count
  <chr>  <chr> <int>     <int>
1 after  down      3        11
2 after  up        6        10
3 before down      8        11
4 before up        4        10
1 голос
/ 04 июня 2019

Опция, использующая data.table

library(data.table)
setDT(df1)[, n := .N, level][, .(count = .N, new_count = first(n)), .(group, level)]
#    group level count new_count
#1: before    up     4        10
#2: before  down     8        11
#3:  after    up     6        10
#4:  after  down     3        11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...