[英]R: How to create a Quartile Column within Groups
我已经使用以下代码成功创建了“ qaurtile”列,但我也想创建一个名为“ quartile_team”的列,该列显示每个团队中的四分位数。 我不知道该怎么做。
感谢您的帮助,
保罗
# generate dataset
teams <- c(rep("East", 6), rep("West", 8), rep("North", 7), rep("South", 9))
time_spent <- rnorm(30)
dataset <- as.data.frame(cbind(teams, time_spent))
dataset$time_spent <- as.numeric(dataset$time_spent)
# create quartile column
dataset <- within(dataset,
quartile <- cut(x = time_spent,
breaks = quantile(time_spent, probs = seq(0, 1, 0.25)),
labels = FALSE,
include.lowest = TRUE))
有更好的方法来执行此操作,但是快速而肮脏的解决方案可能会使用plyr。 我将使用您的函数在以下范围内计算四分位数:
library(plyr)
ddply(dataset, "teams", function(team){
team_quartile <- cut(x = team$time_spent, breaks = quantile(team$time_spent, probs = seq(0, 1, 0.25)),
labels = FALSE,
include.lowest = TRUE)
data.frame(team, team_quartile)
})
基本上,您想由团队拆分数据框架,然后对数据框架的每个子集执行计算。 您也可以为此使用tapply。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.