将我的观察分组为R中不等的箱尺寸

时间:2018-06-01 07:39:17

标签: r dplyr grouping

我是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 :(得分:1)

您可以使用分位数来识别底部30%和前30%分配给SizeGrp 1&amp;然后分别将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))

答案 1 :(得分:1)

我认为你可以试试 quantcut

data <- data %>% 
      group_by(year) %>% 
      mutate(SizeGrp = quantcut(x, q=c(0.3,0.7,1.0), na.rm=TRUE)) %>% 
      ungroup()