2015-10-14 44 views
2

季度計算意味着我這個數據幀(DF1):的data.frame

  Month index 
1 2015-09-01 1.21418847 
2 2015-08-01 -4.37919039 
3 2015-07-01 -1.16004624 
4 2015-06-01 -1.09754890 
5 2015-05-01 -4.37919039 
6 2015-04-01 -4.37919039 
7 2015-03-01 4.37919039 
8 2015-02-01 4.37919039 
9 2015-01-01 -0.11285150 
10 2014-12-01 0.45712044 
11 2014-11-01 0.97597018 
12 2014-10-01 0.87560496 
13 2014-09-01 0.66278156 
14 2014-08-01 4.37919039 
15 2014-07-01 1.15440685 
16 2014-06-01 1.38021497 
17 2014-05-01 1.67663242 
18 2014-04-01 2.08358406 
19 2014-03-01 2.50222843 
20 2014-02-01 2.71665822 
21 2014-01-01 3.13692051 
22 2013-12-01 2.91702023 
23 2013-11-01 3.02603774 
24 2013-10-01 2.55812363 
25 2013-09-01 3.12586325 
26 2013-08-01 3.26063617 
27 2013-07-01 2.91702023 
28 2013-06-01 3.15504505 
29 2013-05-01 2.53958494 
30 2013-04-01 2.61528861 
31 2013-03-01 2.84742861 
32 2013-02-01 2.82097624 
33 2013-01-01 2.53196473 
34 2012-12-01 2.35786991 
35 2012-11-01 2.40611260 
36 2012-10-01 2.42408844 
37 2012-09-01 2.91702023 
38 2012-08-01 2.33372249 
39 2012-07-01 2.00140636 
40 2012-06-01 2.24721387 
41 2012-05-01 1.89189602 
42 2012-04-01 1.98807663 
43 2012-03-01 1.89563925 
44 2012-02-01 1.19541625 
45 2012-01-01 2.91702023 
46 2011-12-01 0.29072412 
47 2011-11-01 -2.91702023 
48 2011-10-01 -2.91702023 
49 2011-09-01 -0.36402331 
50 2011-08-01 -0.55409805 
51 2011-07-01 -0.05902839 
52 2011-06-01 -0.03946940 
53 2011-05-01 0.30898661 
54 2011-04-01 2.91702023 
55 2011-03-01 0.80556310 
56 2011-02-01 1.07001901 
57 2011-01-01 2.91702023 
58 2010-12-01 1.34682208 
59 2010-11-01 1.30446466 
60 2010-10-01 0.97753435 
61 2010-09-01 0.90434619 
62 2010-08-01 0.80415571 
63 2010-07-01 1.41129808 
64 2010-06-01 2.03576435 
65 2010-05-01 2.85757135 
66 2010-04-01 2.91702023 
67 2010-03-01 3.96563441 
68 2010-02-01 4.37919039 
69 2010-01-01 4.57358010 
70 2009-12-01 4.63589893 
71 2009-11-01 4.40042885 
72 2009-10-01 4.21359930 
73 2009-09-01 4.10739350 
74 2009-08-01 2.91702023 
75 2009-07-01 3.85460338 
76 2009-06-01 3.07796824 
77 2009-05-01 2.91702023 
78 2009-04-01 1.90359672 
79 2009-03-01 0.68355248 
80 2009-02-01 0.36218125 
81 2009-01-01 -0.50814101 
82 2008-12-01 0.49310633 
83 2008-11-01 2.98877210 
84 2008-10-01 2.28716199 
85 2008-09-01 0.61433048 
86 2008-08-01 0.51258623 
87 2008-07-01 1.74079440 
88 2008-06-01 2.91702023 
89 2008-05-01 1.60899848 
90 2008-04-01 2.01574569 
91 2008-03-01 1.81341196 
92 2008-02-01 1.48482933 
93 2008-01-01 1.89122725 
94 2007-12-01 1.84400308 
95 2007-11-01 1.23545695 
96 2007-10-01 0.44341718 
97 2007-09-01 0.55630846 
98 2007-08-01 0.42806839 
99 2007-07-01 -0.75234218 
100 2007-06-01 -1.44397151 
101 2007-05-01 -2.10673018 
102 2007-04-01 -1.40817350 
103 2007-03-01 -0.73608848 
104 2007-02-01 -0.69200513 
105 2007-01-01 -0.51056142 
106 2006-12-01 -0.40504212 
107 2006-11-01 -0.04161989 
108 2006-10-01 -0.10478629 
109 2006-09-01 0.07423530 
110 2006-08-01 0.13076121 
111 2006-07-01 2.91702023 
112 2006-06-01 1.02865488 
113 2006-05-01 -0.08979180 
114 2006-04-01 -1.52792341 
115 2006-03-01 -2.52839603 
116 2006-02-01 -3.39026284 
117 2006-01-01 -3.04045769 

我想計算的季度平均每年。這將導致一個包含39行的data.frame。

我做了這個代碼來實現的季度平均:

final<-df1[, mean(index), by = quarterly(Month)] 

錯誤mssg是:

Error in `[.data.frame`(df1, , mean(index), : 
    unused argument (by = month(Month)) 

信息:

class(df1$index) 
"numeric" 
class(df1$Month) 
"factor" 

我做錯了什麼?

感謝

+1

您是否正在嘗試將'data.table'包函數與常規的data.frame對象一起使用? – ialm

+0

再次讀你的代碼,看起來你不知道如何在R中編寫代碼。也許初學者的R教程會更有幫助。 – ialm

+0

我更改爲'季度',我得到了同樣的錯誤消息。 – digsydinner

回答

3

看來你要使用data.table語法數據幀。因此,首先要做

library(data.table) 
setDT(df1) 

加載data.table包,並設置df1到數據表。那麼你可以做

final <- df1[, mean(index), keyby = .(year(Month), quarter(Month))] 
str(final) 
# Classes ‘data.table’ and 'data.frame': 39 obs. of 3 variables: 
# $ year : int 2006 2006 2006 2006 2007 2007 2007 2007 2008 2008 ... 
# $ quarter: int 1 2 3 4 1 2 3 4 1 2 ... 
# $ V1  : num -2.986 -0.196 1.041 -0.184 -0.646 ... 
# - attr(*, "sorted")= chr "year" "quarter" 
# - attr(*, ".internal.selfref")=<externalptr> 

這表明我們在結果中有39行,如你所願。一些注意事項:該函數被命名爲quarter()而不是quarterly(),您需要Month中的資本M,並且需要按年和季度分組。

+0

我會更加小心。謝謝,理查德。 – digsydinner