我有一個面板格式(country-year)的data.frame,我需要根據國家和地區計算變量的平均值每五年一次。所以我只是使用'reshape'軟件包中的'cast'功能,它工作。現在我需要將這些信息(五分位數的平均值)放在舊數據框架中,這樣我可以運行一些迴歸。我怎樣才能做到這一點?下面我提供了一個例子來ilustrate我想要什麼:如何將重塑包的轉換函數獲取的信息重新放回原始數據框R
現在set.seed(2)
fake= data.frame(y=rnorm(20), x=rnorm(20), country=rep(letters[1:2], each=10), year=rep(1:10,2), quinquenio= rep(rep(1:2, each=5),2))
fake.m = melt.data.frame(fake, id.vars=c("country", "year", "quinquenio"))
cast(fake.m, country ~ quinquenio, mean, subset=variable=="x", na.rm=T)
,一切都很好,我得到了我wantted:x和y的平均值,按國家和五年期年。現在,我想把它們放回到data.frame中,像這樣:
y x country year quinquenio mean.x
1 -0.89691455 2.090819205 a 1 1 0.8880242
2 0.18484918 -1.199925820 a 2 1 0.8880242
3 1.58784533 1.589638200 a 3 1 0.8880242
4 -1.13037567 1.954651642 a 4 1 0.8880242
5 -0.08025176 0.004937777 a 5 1 0.8880242
6 0.13242028 -2.451706388 a 6 2 -0.2978375
7 0.70795473 0.477237303 a 7 2 -0.2978375
8 -0.23969802 -0.596558169 a 8 2 -0.2978375
9 1.98447394 0.792203270 a 9 2 -0.2978375
10 -0.13878701 0.289636710 a 10 2 -0.2978375
11 0.41765075 0.738938604 b 1 1 0.2146461
12 0.98175278 0.318960401 b 2 1 0.2146461
13 -0.39269536 1.076164354 b 3 1 0.2146461
14 -1.03966898 -0.284157720 b 4 1 0.2146461
15 1.78222896 -0.776675274 b 5 1 0.2146461
16 -2.31106908 -0.595660499 b 6 2 -0.8059598
17 0.87860458 -1.725979779 b 7 2 -0.8059598
18 0.03580672 -0.902584480 b 8 2 -0.8059598
19 1.01282869 -0.559061915 b 9 2 -0.8059598
20 0.43226515 -0.246512567 b 10 2 -0.8059598
我很欣賞任何正確方向的提示。提前致謝。
ps .:我需要這個的原因是我會用五年一次的數據進行迴歸,對於一些變量(如人均收入)我有所有年份的信息,所以我決定平均5年。
我使用ddply喜歡你的解決方案!這似乎更容易!我會稍微等一下,但我想我會接受你的答案。再次感謝。 – 2011-05-19 23:20:43
這似乎是一個明確的案例分裂,適用,結合我 - 但有多種方法來剝皮貓!很高興這是有幫助的。 – Chase 2011-05-19 23:26:42