0

私は、270,000 をはるかに超える観測値と、この議論 (PartyCode) で関心のある変数の多数の欠損値を持つ国際的な毎日のデータ (年変数を作成しました) を扱っています。データは次のようになります。

Data <- data.frame(
  Observation = 1:6,
  PartyCountry = c("CHN", "CHN", "GER", "GER", "USA", "USA"), 
  Year = c(1999, 2000, 2000, 2001, 1999, 1999),
  PartyCode=c(20, NA, 20, 22, NA, 21) 
  )


Observation     PartyCountry   PartyYear    PartyCode
      1              CHN       1999             20
      2              CHN       2000             NA
      3              GER       2000             20
      4              GER       2001             22
      5              USA       1999             NA
      6              USA       1999             21

そして、このデータを国年形式の年次データに変更したいと思います。

Observation PartyCountry PartyYear PartyCode20Count PartyCode21Count PartyCode22Count
    1        CHN          1999            100             100             100
    2        CHN          2000            100             100             100
    3        CHN          2001            300             300             300
    4        GER          1999            300             300             300
    5        GER          2000            140             140             140
    6        GER          2001            212             212             200

私の質問は多面的です:

1) カテゴリの PartyCode 変数から値を抽出して、上記で必要な (各カテゴリの) カウント変数を生成するにはどうすればよいですか?

特に、このデータセットには、カテゴリ変数 PartyCode の欠損値が多数含まれています。

4

1 に答える 1

0

dcast「reshape2」から探索する必要があるようです。

library(reshape2)
dcast(DF, PartyCountry + PartyYear ~ PartyCode, value.var="PartyCode")
# Aggregation function missing: defaulting to length
#   PartyCountry PartyYear 20 21 22
# 1          CHN      1999  1  0  0
# 2          CHN      2000  2  0  0
# 3          CHN      2001  0  0  1
# 4          GER      1999  3  0  0
# 5          USA      2000  0  2  0
# 6          USA      2001  2  0  2

ここでは、(集計変数として使用して) 「カウント」しただけですが、より意味のあるlength別の関数 (sumまたは など) を使用することもできます。mean


一般に、データを「折りたたむ」ということは、R の多くの「集約」関数の 1 つを検討することを示唆しています。次に、最初の「長い」形式から最終的に最終的な「広い」形式に変換することは、通常、1 つを検討することを示唆しています。 「再形成」機能の。

于 2013-08-27T17:30:52.570 に答える