2014-11-14 2 views
0

다음 코드를 사용하여 "qaurtile"열을 만들었지 만 각 팀 내의 사 분위수를 나타내는 "quartile_team"이라는 열을 만들고 싶습니다. 나는 이것을하는 방법을 이해할 수 없다.R : 그룹 내에서 사 분위 기둥을 만드는 방법

도움말은

# 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)) 

답변

2

가이 작업을 수행하는 것이 훨씬 더 좋은 방법입니다하지만 신속하고 더러운 솔루션은 아마 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를 사용할 수 있습니다.