簡體   English   中英

R:如何在組內創建四分位數列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM