我正在使用跨国每日数据(我为其制作了一年变量),观察结果超过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缺失值。
答案 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
作为聚合变量),但如果他们也可以使用不同的函数(例如,sum
或mean
)更有意义。
通常,“折叠”数据建议查看R中的众多“聚合”函数之一。然后,从您开始的“长”格式转换为您想要最终的“宽”格式通常建议看着其中一个“重塑”功能。