1. ホーム
  2. r

[解決済み】data.frameをワイドフォーマットからロングフォーマットにリシェイプする

2022-04-12 21:35:48

質問

を変換するのに苦労しています。 data.frame をワイドテーブルからロングテーブルに変更しました。 現時点では、次のようになります。

Code Country        1950    1951    1952    1953    1954
AFG  Afghanistan    20,249  21,352  22,532  23,557  24,555
ALB  Albania        8,097   8,986   10,058  11,123  12,246

では、この data.frame を長い data.frame . このようなものです。

Code Country        Year    Value
AFG  Afghanistan    1950    20,249
AFG  Afghanistan    1951    21,352
AFG  Afghanistan    1952    22,532
AFG  Afghanistan    1953    23,557
AFG  Afghanistan    1954    24,555
ALB  Albania        1950    8,097
ALB  Albania        1951    8,986
ALB  Albania        1952    10,058
ALB  Albania        1953    11,123
ALB  Albania        1954    12,246

を見て、すでに使ってみたのですが melt()reshape() 関数 同じような質問で何人かの人が提案していたように しかし、今のところ、私は厄介な結果を得るだけです。

可能であれば reshape() 関数は の方が少しは綺麗に扱えそうです。

どのように解決するのですか?

reshape() と同じように、慣れるまで時間がかかります。 melt / cast . 以下は、データフレームが次のような名前であると仮定して、リシェイプを使った解決策です。 d :

reshape(d, 
        direction = "long",
        varying = list(names(d)[3:7]),
        v.names = "Value",
        idvar = c("Code", "Country"),
        timevar = "Year",
        times = 1950:1954)