R中的新表基于现有字段和数据

时间:2017-12-08 06:20:36

标签: r

我需要再次提出问题,因为它已被关闭,但问题尚未解决。

所以,我正在研究国际贸易数据,目前有下表,其中包含5个不同的currency_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()但没有成功。

非常感谢您的支持。

2 个答案:

答案 0 :(得分:0)

如果我理解正确的话,这里是基础R的单行。

xtabs

说明:使用trade_value_usdyear作为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) (列)的函数进行交叉制表。

样本数据

$("#analyticForm_description").load('https://192.168.23.10/SystemServices/main?system:run=html/indicators/templates/editApp-definition.xml&Id=1000205&palletId=testtt', function() { MD.ui.editPallets.editform_definition(); } );

答案 1 :(得分:0)

如果存在重复的排列,我建议使用此代码(虽然不在基础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))