Чтобы сгруппировать мои наблюдения в неравный размер корзины в R - PullRequest
0 голосов
/ 01 июня 2018

Я новичок в языке программирования R и, таким образом, столкнулся с небольшой трудностью.У меня есть фрейм данных, в котором я хочу сгруппировать данные об их рыночной капитализации за каждый месяц.

Year <- c(2000:2010) 

, и за каждый год есть 100 акций с их значениями ME.Я хочу иметь столбец SizeGrp, который группирует акции в верхние 30%, средние 40% и нижние 30% как группы 1,2 и 3 соответственно для каждого года.

data <- data %>% 
          group_by(year) %>% 
          mutate(SizeGrp = ntile(ME,3)) %>% 
          ungroup()

Я пробовал это, но этоделится на 33% каждый.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Я думаю, вы можете попробовать функцию quantcut :

data <- data %>% 
      group_by(year) %>% 
      mutate(SizeGrp = quantcut(x, q=c(0.3,0.7,1.0), na.rm=TRUE)) %>% 
      ungroup()
0 голосов
/ 01 июня 2018

Вы можете использовать квантили, чтобы определить нижние 30% и верхние 30%, присваивая SizeGrp 1 и 3 соответственно, а затем назначить остаток SizeGrp 2

data <- data %>% group_by(Year) %>%
  mutate(SizeGrp = case_when(ME < quantile(ME, c(0.3,0.7))[1] ~ 1L,
                             ME > quantile(ME, c(0.3,0.7))[2] ~ 3L,
                             TRUE ~ 2L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...