2013-04-26 2 views
1

다음 데이터 프레임을 사용하여 빠른 질문이 있습니다.다른 날짜의 값 선택 R

x <- c("2012-01-01","2012-01-01","2012-01-01","2012-01-02","2012-01-02","2012-01-03","2012-01-03") 

y <- c(1,2,3,4,5,6,7) 

data.frame(x,y) 

이제 x에 지정된 날짜마다 y의 평균을 취하고 싶습니다. 어떻게해야합니까? 관찰의 양이 많은 감사

당신의 예에서
+2

는'집계 기능을 살펴 ','by 또는'tapply'. 예를 들어 – dickoa

+0

과 같이 '? by'를 사용하여 도움말 페이지의 예제를 살펴보십시오. x와 y의 요소 수는 같지 않습니다. data.frame (x, y)를 호출 할 때 오류가 발생하지 않습니까? – Abbas

+0

예, 죄송합니다. 빠른 예가 지금 편집되었습니다. – user2298382

답변

2

각 날짜에 대해 서로 다른이기 때문에 나는 당신이 그렇게 같은 aggregate 기능을 사용할 수 있습니다 어려움이 :

df <- data.frame(x,y) 
aggregate(y ~ x , df , mean) 
#   x y 
#1 2012-01-01 2.0 
#2 2012-01-02 4.5 
#3 2012-01-03 6.5 

을하지만은 많은 방법 중 하나입니다 당신 이것을 할 수 있고 은 가장 좋은이었습니다. 실제 데이터의 구조와 같은 것에 달려 있습니다.

require(data.table) 
DT <- data.table(df) 
DT[, mean(y) , by = x ] 
#   x V1 
#1: 2012-01-01 2.0 
#2: 2012-01-02 4.5 
#3: 2012-01-03 6.5 

을 아니면 평균을 포함하는 새 열을 추가하려면 다음과 같이 사용할 수 있습니다 :

data.table 솔루션이 될 수

DT[ , "Mean" := mean(y) , by = x ]