Прикрепление подходящих подмножеств квартилей к набору данных - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь добавить две колонки в набор данных игрока NBA.В первом столбце будет указано, какой возраст игрока относится ко всем игрокам в наборе данных.Во втором дополнительном столбце будет указано, в каком квартиле находится возраст отдельного игрока среди его позиций (например, Point Guard, Small Forward, Center и т. Д.).Я могу использовать пакет dplyr для вычисления квартилей подмножеств по возрасту на основе позиции игрока, но я не знаю, как присоединить его к исходному набору данных или если это даже правильный подход.

Я использовал dplyr для расчета подгрупп возрастных групп на основе позиции.Я пытался использовать другие пакеты, такие как fuzzyjoin, но не чувствовал себя комфортно с ними работать.

#Incorporate necessary packages
library(ballr)
library(magrittr)
library(dplyr)
library(tidyverse)


#Establish full player table
players <- NBAPerGameAdvStatistics(season = 2018)

#Calculates Quartiles for Each Position

Pos_quartiles <- players %>% 
  group_by(pos) %>% 
  summarise(age = list(enframe(quantile(age, probs=c(0.25,0.5,0.75,1.0))))) %>% 
  unnest

Я ожидаю, что у меня будет набор данных игроков с 664 наблюдениями и 32 переменными, последние два из которых былидобавлен в результате этой процедуры.В дополнительных строках будет показан возрастной квартиль игрока, основанный на всех включенных игроках, а также квартильный возраст игрока, основанный на его позиции.

1 Ответ

0 голосов
/ 28 марта 2019

Мы можем использовать base::cut с квантилем, чтобы получить соответствующий квартиль

library(dplyr)
players %>% 
  mutate(quar_all=cut(age, breaks=c(0,quantile(age, probs=c(0.25,0.5,0.75,1.0))),labels = FALSE)) %>% 
  group_by(pos) %>% 
  mutate(quar_pos=cut(age, breaks=unique(c(0,quantile(age, probs=c(0.25,0.5,0.75,1.0)))),labels = FALSE))

Обратите внимание: quar_pos Я использовал unique, так как получил ошибку

Ошибка в cut.default (возраст, разрывы = квантиль (возраст, исследования = c (0,25, 0,5,: 'перерывы' не уникальны

Для аналогичной ошибки unique было предложено Дидзисом Элфертом здесь , поэтому, как упоминал Дидзис, ожидают меньшее число квартилей для затронутых групп.

...