我希望能够将差异和百分比变化添加到数据框中的每一列。添加数据框中每列的差异和百分比变化?
我能够融化数据和执行计算,但我无法弄清楚如何将它们重新塑造或重新塑造。我也有一个潜行的怀疑,这很容易用plyr完成,但由diff()
返回n-1行给我的问题。
使用包含的数据集:
library(plyr)
library(quantmod)
head(longley)
GNP.deflator GNP Unemployed Armed.Forces Population Year Employed
1947 83.0 234.289 235.6 159.0 107.608 1947 60.323
1948 88.5 259.426 232.5 145.6 108.632 1948 61.122
1949 88.2 258.054 368.2 161.6 109.773 1949 60.171
1950 89.5 284.599 335.1 165.0 110.929 1950 61.187
1951 96.2 328.975 209.9 309.9 112.075 1951 63.221
1952 98.1 346.999 193.2 359.4 113.270 1952 63.639
longley.m <- melt(longley, id="Year")
longley.m <- ddply(longley.m, .(variable), transform, valdiff=diff(c(NA, value)), valdelt=Delt(value))
head(longley.m)
Year variable value valdiff Delt.1.arithmetic
1 1947 GNP.deflator 83.0 NA NA
2 1948 GNP.deflator 88.5 5.5 0.066265060
3 1949 GNP.deflator 88.2 -0.3 -0.003389831
4 1950 GNP.deflator 89.5 1.3 0.014739229
5 1951 GNP.deflator 96.2 6.7 0.074860335
6 1952 GNP.deflator 98.1 1.9 0.019750520
(我不知道为什么侧平举使得它自己的列名,但我已经放弃了对)现在
,我可以cast(longley.m, Year ~ variable)
得到回到原始数据集,但是我希望能够对不同列中的每个变量进行差异和百分比更改,而无需对每个变量手动执行计算,然后将它们重新绑定到一起。我很有信心我试着投无济于事的每一个变化...
更新: Joran解决了侧平举列命名问题:与as.vector强迫它!
它呢?我的问题更多的是对每一列执行相同的操作并将其放回数据框。我在那里看不到解决方案。 – Totovader 2012-01-01 01:59:20
我想我不明白困难的根源。我明白我能做些什么来解决问题。 – 2012-01-01 15:42:19