2012-07-06 2 views
0

여러 개의 데이터 서브 세트에 대해 R에 quantile 테이블을 작성하려고합니다.데이터의 여러 서브 세트에 대해 R 단위로 퀀트 테이블을 작성하십시오.

지금은 연속적이 아닌 테이블 DATA에 ID (p_ids)의 벡터가 있습니다. p_ids의 각 값에 대해 나는 quantile을 나열하려고합니다. 의

지금까지 내가 해봤 변화 :

i <- 1 
n <- 1 

for (i in p_ids) { 
    while(n <= nrow(data)) { 
     quantiles[n] <- quantile(subset(alldata$variableA, alldata$variableB == i), 
           probs = c(0,1,2,3)/3) 
     n <- n + 1 
    } 
} 

나는 내 문제는 인덱스 어딘가에있다 알지만, 인덱스가 어디로 가야 얻을 수없는 것. 제안?

답변

0

당신은 FUN = 분위수를 설정하면 http://stat.ethz.ch/R-manual/R-devel/library/stats/html/aggregate.html

과 p_ids 당신이 원하는 것을해야 =하여 분위수을 할 수 집계를 사용하여 조사한다.

귀하의 질문에 오해가 있지 않는 한.

+0

도움 주셔서 감사합니다. 나는 집계 함수가 많은 시간을 절약 할 것이라고 생각한다. 나는 더 많은 조사를 해왔지만 'by'가 목록이어야한다는 오류를 계속받는 것 같습니다. 값과 데이터 프레임을 모두 사용하려고했습니다. 내 코드는 다음과 같습니다. aggregate (x = mydata $ q1, by = p_ids, fun = median) 지금 p_ids의 "list"를 생성하기 위해 고유 함수 -p_ids <- unique (mydata $ p_id)를 사용하고 있습니다. – user1489719

+0

또한 내가 list()를 사용하면 그 문제를 처리하지만 인수가 동일한 길이를 가져야한다는 오류 메시지가 표시된다는 것을 알게되었습니다. (코드 : aggregate (x = mydata $ q1, by = list (p_ids), fun = 중간 값) – user1489719

+0

마침내 당신이 R 초보자 인 경우 : 집계 (x = mydata, by = list (mydata $ v1), fun = 중간 값). 모든 요소가 숫자 인 데이터 프레임이되어야합니다 (중앙값을 계산할 수 있습니다). 그런 다음 mydata $ v1은 항목을 그룹화하려는 벡터입니다. 즉, 필드 p_id 인 항목입니다. – user1489719

0

cut()을 살펴보십시오. 예컨대 :

q <- cut(p_ids, 2) 
data.frame(P_id = p_ids, Bin = q) 

당신이 원하는 얼마나 많은 쓰레기통되는 cut()의 두 번째 인수.

관련 문제