-1

私はデータフレームを持っていますdeflator.

inflation次の方法で計算できる新しいデータ フレームを取得したい:

 deflator[i] - deflator[i-4]
----------------------------- * 100
        deflator [i - 4] 

データ フレームdeflatorには 71 個の数字があります。

> deflator
 [1] 0.9628929 0.9596746 0.9747274 0.9832532 0.9851884
 [6] 0.9797770 0.9913502 1.0100561 1.0176906 1.0092516
[11] 1.0185932 1.0241043 1.0197975 1.0174097 1.0297328
[16] 1.0297071 1.0313232 1.0244618 1.0347808 1.0480411
[21] 1.0322142 1.0351968 1.0403264 1.0447121 1.0504402
[26] 1.0487097 1.0664664 1.0935239 1.0965951 1.1141851
[31] 1.1033155 1.1234482 1.1333870 1.1188136 1.1336276
[36] 1.1096461 1.1226584 1.1287245 1.1529588 1.1582911
[41] 1.1691221 1.1782178 1.1946234 1.1963453 1.1939922
[46] 1.2118189 1.2227960 1.2140535 1.2228828 1.2314258
[51] 1.2570788 1.2572214 1.2607763 1.2744415 1.2982076
[56] 1.3318808 1.3394186 1.3525902 1.3352815 1.3492751
[61] 1.3593859 1.3368135 1.3642940 1.3538567 1.3658135
[66] 1.3710932 1.3888638 1.4262185 1.4309707 1.4328823
[71] 1.4497201

これは私にとって非常にトリッキーな質問です。forループを使用してこれを実行しようとしました:

> d <- data.frame(deflator)
> for (i in 1:71) {d <-rbind(d,c(delfaotr ))} 

私はそれを間違っているかもしれないと思います。

4

2 に答える 2

2

データ フレームを使用する理由 これは単純なベクトル演算です。

inflation = 100 * (deflator[1:67] -  deflator[-(1:4)])/deflator[-(1:4)]
于 2012-05-29T08:14:30.657 に答える
1

私は@Fhnuzoagに同意します。あなたの例は、データフレームではなく、数値ベクトルでの計算を示唆しています。lag関数の引数を利用して計算を行う追加の方法は次のdiffとおりです(質問のインデックスと一致するインデックスを使用)。

lagBy <- 4 # The number of indexes by which to lag

laggedDiff <- diff(deflator, lag = lagBy) # The numerator above

theDenom <- deflator[seq_len(length(deflator) - lagBy)] # The denominator above

inflation <- laggedDiff/theDenom

最初のいくつかの結果は次のとおりです。

head(inflation)
# [1] 0.02315470 0.02094710 0.01705379 0.02725941 0.03299085 0.03008297
于 2012-05-29T10:04:57.580 に答える