2013-05-20 135 views
2

我有這樣的數據框「DF1」爲例,實際上是一個更大的一個部分(15歲):計算從每日數據月平均值

   X1   X2 
3798 2009-12-29   0 
3799 2009-12-30   0 
3800 2009-12-31   0 
3802 2010-01-02   0 
3803 2010-01-03   2.1 
3804 2010-01-04   0 
3805 2010-01-05   0 
3806 2010-01-06   0 
3807 2010-01-07   0 
3808 2010-01-08   0 
3809 2010-01-09   0 
3810 2010-01-10   6.8 
3811 2010-01-12   0 
3812 2010-01-13   0 
3813 2010-01-14  17.7 
3814 2010-01-16   0 
3815 2010-01-17   0 
3816 2010-01-18   1.5 
3817 2010-01-19   0 
3818 2010-01-20   0 
3819 2010-01-21   0 
3820 2010-01-22   0 
3821 2010-01-23   0 
3822 2010-01-24   0 
3823 2010-01-25   0 
3824 2010-01-26   0 
3825 2010-01-27   4.5 
3826 2010-01-28   0 
3827 2010-01-29   0 
3828 2010-01-31   0 
3829 2010-02-01   0 
3830 2010-02-03   0 
3831 2010-02-04   0 
3832 2010-02-05   0 
3833 2010-02-07   0 
3834 2010-02-08   0 
3835 2010-02-09   1.2 

我想用這個數據幀來創建一個新的「df2」每月平均值。有誰知道如何做到這一點?幫助會很棒!

+3

你有沒有試過搜索stackoverflow或谷歌的答案?這是一個很常見的問題。 –

+0

或者,在右側的「相關」下查找。 – Frank

回答

13

一種方式,使用base R將確保您的日期類別爲Date或類似的(例如POSIXct),如果您還沒有,然後提取月份和年份(因爲您的數據跨越多個年),並像這樣聚合:

# Convert to date if not already 
df1$X1 <- as.Date(df1$X1) 

# Get months 
df1$Month <- months(df1$X1) 

# Get years 
df1$Year <- format(df1$X1,format="%y") 

# Aggregate 'X2' on months and year and get mean 
aggregate(X2 ~ Month + Year , df1 , mean) 
# Month Year  X2 
#1 December 09 0.0000000 
#2 February 10 0.1714286 
#3 January 10 1.2074074 

如果你有四處看看,有很多方法可以做到這一點。

+0

我想我應該看看周圍好一點。 Thx雖然幫助! – MB123

+0

@ MB123有時很難找到正確的搜索條件。不用謝! –

+4

如何按照正確的順序獲得月份? –