我需要再次提出这个问题,因为它是重复的,但这个问题还没有解决。
因此,我正在研究国际贸易数据,目前有5个不同的commodity_code值表(commod_codes = c('85','84','87','73','29')):
year trade_flow reporter partner commodity_code commodity trade_value_usd
1 2012 Import Belarus China 29 Organic chemicals 150863100
2 2013 Import Belarus China 29 Organic chemicals 151614000
3 2014 Import Belarus China 29 Organic chemicals 73110200
4 2015 Import Belarus China 29 Organic chemicals 140396300
5 2016 Import Belarus China 29 Organic chemicals 135311600
6 2012 Import Belarus China 73 Articles of iron or steel 100484600我需要创建一个看起来很简单的新表(第一行为商品代码,第一列为年份,单元格中为相应的贸易值):
year commodity_code
29 73 84 85 87
1998 value1 ... value 5
1999
…
2016*我使用了reshape(),但没有成功。
会感谢你的支持。
发布于 2017-12-08 08:01:42
如果有重复排列,我建议使用这段代码(虽然没有在基本R-使用dplyr和tidyr包)
as.data.frame(trade_data[,c("year","commodity_code","trade_value_usd")] %>% group_by (year,commodity_code)%>% summarise( sum(trade_value_usd))%>%spread(commodity_code,3))发布于 2017-12-08 06:38:43
如果我正确理解了你,这里是R基地的一条单线线。
xtabs(trade_value_usd ~ year + commodity_code, data = df);
#year 29 73
# 2012 150863100 100484600
# 2013 151614000 0
# 2014 73110200 0
# 2015 140396300 0
# 2016 135311600 0说明:使用xtabs将trade_value_usd交叉成year (行)和commodity_code (列)的函数。
样本数据
df <- read.table(text =
"year trade_flow reporter partner commodity_code commodity trade_value_usd
1 2012 Import Belarus China 29 'Organic chemicals' 150863100
2 2013 Import Belarus China 29 'Organic chemicals' 151614000
3 2014 Import Belarus China 29 'Organic chemicals' 73110200
4 2015 Import Belarus China 29 'Organic chemicals' 140396300
5 2016 Import Belarus China 29 'Organic chemicals' 135311600
6 2012 Import Belarus China 73 'Articles of iron or steel' 100484600
", header = T, row.names = 1)https://stackoverflow.com/questions/47708820
复制相似问题