将分类变量转换为R中的事件计数变量

时间:2013-08-27 17:25:08

标签: r time-series categorical-data

我正在使用跨国每日数据(我为其制作了一年变量),观察结果超过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缺失值。

1 个答案:

答案 0 :(得分:0)

听起来你应该从“reshape2”中探索dcast

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作为聚合变量),但如果他们也可以使用不同的函数(例如,summean)更有意义。


通常,“折叠”数据建议查看R中的众多“聚合”函数之一。然后,从您开始的“长”格式转换为您想要最终的“宽”格式通常建议看着其中一个“重塑”功能。