WedX - журнал о программировании и компьютерных науках

Рассчитать относительную частоту для определенной группы

У меня есть data.frame категориальных переменных, которые я разделил на группы, и я получил счетчики для каждой группы.

My original data nyD looks like:

Source: local data frame [7 x 3]
Groups: v1, v2, v3

  v1    v2   v3
1  a  plus  yes
2  a  plus  yes
3  a minus   no
4  b minus  yes
5  b     x  yes
6  c     x notk
7  c     x notk

I performed the following operations using dplyr:

ny1 <- nyD %>% group_by(v1,v2,v3)%>%
           summarise(count=n()) %>%
           mutate(prop = count/sum(count))


My data "ny1" looks like:

Source: local data frame [5 x 5]
Groups: v1, v2

  v1    v2   v3 count prop
1  a minus   no     1    1
2  a  plus  yes     2    1
3  b minus  yes     1    1
4  b     x  yes     1    1
5  c     x notk     2    1

Я хочу рассчитать относительную частоту по отношению к группам V1 в переменной prop. Переменная prop должна быть соответствующим счетчиком, деленным на «сумму счетчиков для группы V1». В группе V1 всего 3 «a», 2 «b» и 1 «c». То есть ny1 $ prop [1] ‹- 1/3, ny1 $ prop [2]‹ - 2/3 .... Операция изменения, когда использование count / sum (count) неверно. Уточняю, что сумма должна быть переведена только на группу V1. Есть ли способ использовать dplyr для этого?

28.12.2014

Ответы:


1

Вы можете сделать все это за один шаг (используя исходные данные nyD и не создавая ny1). Это потому, что когда вы запустите mutate после summarise, dplyr по умолчанию упадет на один уровень агрегации (v2) (конечно, моя любимая функция в dplyr) и будет агрегировать только v1

nyD %>% 
   group_by(v1, v2) %>%
   summarise(count = n()) %>%
   mutate(prop = count/sum(count))

# Source: local data frame [5 x 4]
# Groups: v1
# 
#   v1    v2 count      prop
# 1  a minus     1 0.3333333
# 2  a  plus     2 0.6666667
# 3  b minus     1 0.5000000
# 4  b     x     1 0.5000000
# 5  c     x     2 1.0000000

Или более короткая версия с использованием count (спасибо @beginneR)

df %>% 
  count(v1, v2) %>% 
  mutate(prop = n/sum(n))
28.12.2014
  • Или немного короче: count(df, v1, v2) %>% mutate(prop = n/sum(n)) 01.01.2015
  • Обратите внимание, что порядок переменных в выражении group() также важен и определяет способ вычисления относительных пропорций. 19.12.2016
  • Обратите внимание, что в исходном вопросе было 3 группы; с 2 группами ответ не дает относительных частот. Однако версия счетчика работает более чем с 2 группами. 30.10.2020
  • @bshor Что ты имеешь в виду? Приведите пример 31.10.2020
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]