我是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%。
答案 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()