R : data.frame에서 값을 연결하고 평균화하는 가장 좋은 기능은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2473659

문제

이 코드의 데이터가 있습니다.

   my_df = data.frame("read_time" = c("2010-02-15", "2010-02-15", 
                                      "2010-02-16", "2010-02-16", 
                                       "2010-02-16", "2010-02-17"), 
                      "OD" = c(0.1, 0.2, 0.1, 0.2, 0.4, 0.5) )

이것을 생성합니다 :

> my_df
   read_time  OD
1 2010-02-15 0.1
2 2010-02-15 0.2
3 2010-02-16 0.1
4 2010-02-16 0.2
5 2010-02-16 0.4
6 2010-02-17 0.5

나는 각각의 별개의 read_time에 대한 OD 열을 평균화하고 싶습니다 (일부는 복제되어 있습니다. 다른 사람들은 다른 것들은 그렇지 않음) 표준 편차를 계산하여 다음과 같은 테이블을 생성하고 싶습니다.

> my_df
   read_time  OD        stdev
1 2010-02-15 0.15       0.05
5 2010-02-16 0.3         0.1
6 2010-02-17 0.5         0

Data.frame에서 그러한 값을 연결하는 데 가장 적합한 기능은 무엇입니까?

도움이 되었습니까?

해결책

그만큼 Plyr 패키지는 이것에 인기가 있지만 기본 기능은 by() 그리고 aggregate() 도 도움이 될 것입니다.

> ddply(my_df, "read_time", function(X) data.frame(OD=mean(X$OD),stdev=sd(X$OD)))
   read_time      OD   stdev
1 2010-02-15 0.15000 0.07071
2 2010-02-16 0.23333 0.15275
3 2010-02-17 0.50000      NA

마지막 std.dev에 대해 NA 대신 0을 반환하기 위해 누락 된 비트를 추가 할 수 있습니다.

또한 Data.Frame Construction에있는 인용문 (변수)이 필요하지 않습니다.

다른 팁

패키지 데이터를 시도 할 수 있습니다. MySQL을 알고 있다면 모든 기능을 얻는 것이 매우 쉬워야합니다. 그렇지 않으면 기본 사항도 충분합니다 ;-)

my_dfdt<-data.table(my_df)
mean<-my_dfdt[,mean(OD), by="read_time"]
sd<-  ..  

또한 한 줄에 가입하거나 마지막에 CBIND, 스타일의 전화로 가입 할 수 있습니다.

또 다른 장점 : 샘플이 큰 경우 매우 빠릅니다. 매우 빠릅니다 ... 문서를 참조하십시오.

이것은 당신이 사용할 수있는 방법을 보여줍니다 aggregate 당신의 평균과 표준 편차를 얻기 위해 read_time.

>aggregate(my_df$OD, by=list(my_df$read_time), function(x) mean(x))

     Group.1         x
1 2010-02-15 0.1500000
2 2010-02-16 0.2333333
3 2010-02-17 0.5000000


>aggregate(my_df$OD, by=list(my_df$read_time), function(x) sd(x))
     Group.1          x
1 2010-02-15 0.07071068
2 2010-02-16 0.15275252
3 2010-02-17         NA
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top